read-pipes.coffee (861B)
1 2 fs = require 'fs' 3 4 timeout = require './timeout' 5 6 7 # Read from pipe files until they get closed/deleted 8 # 9 # @param dir String path to tmp files 10 # @param max_wait Number millisecond timeout value 11 # 12 # @return Object {stderr, stdout, status} 13 14 module.exports = (dir, max_wait) -> 15 16 t_limit = Date.now() + max_wait 17 18 until read 19 try 20 read = true if fs.readFileSync(dir + '/done').length 21 timeout t_limit, 'Process execution timeout or exit flag read failure' 22 23 until deleted 24 try 25 fs.unlinkSync dir + '/done' 26 deleted = true 27 timeout t_limit, 'Can not delete exit code file' 28 29 result = {} 30 for pipe in ['stdout', 'stderr', 'status'] 31 result[pipe] = fs.readFileSync dir + '/' + pipe, encoding: 'utf-8' 32 read = true 33 fs.unlinkSync dir + '/' + pipe 34 35 try 36 fs.rmdirSync dir 37 38 result.status = Number result.status 39 40 result