Skip to content

Instantly share code, notes, and snippets.

@w00kie
Last active December 17, 2015 04:39
Show Gist options
  • Save w00kie/5551971 to your computer and use it in GitHub Desktop.
Save w00kie/5551971 to your computer and use it in GitHub Desktop.
Binary safe copyFile for muffin.js
# Use Piping Streams to copy files
copyFile = (source, target) ->
deffered = Q.defer()
muffin.mkdir_p path.dirname(target), 0o755, (err) ->
return done(err) if err
# Start Read Stream
rd = fs.createReadStream source
rd.on 'error', (err) ->
done err
# Start Write Stream
wr = fs.createWriteStream target
wr.on 'error', (err) ->
done err
# Handle end of write
wr.on 'close', (ex) ->
done()
# BEAM ME UP SCOTTY!
rd.pipe wr
done = (err) ->
if err
muffin.notify source, 'Failed copy operation', true
return deffered.reject(err)
deffered.resolve()
deffered.promise
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment