git-off

git off handles large files in git repos
git clone https://noulin.net/git/git-off.git
Log | Files | Refs | README

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