webgme-engine
Version:
WebGME server and Client API without a GUI
49 lines (39 loc) • 1.01 kB
JavaScript
/*eslint-env node*/
// TODO: Remove me when webgme requires node >= v8.5.0
/**
* Falls back on fs.copyFile if node >= v8.5.0.
* This method returns a promise.
*
* @author pmeijer / https://github.com/pmeijer
*/
var fs = require('fs'),
Q = require('q');
// https://stackoverflow.com/questions/11293857/fastest-way-to-copy-file-in-node-js
/**
*
* @param {string} source
* @param {string} target - target file
*/
function copyFile(source, target) {
var deferred,
rd,
wr;
if (typeof fs.copyFile === 'function') {
return Q.ninvoke(fs, 'copyFile', source, target);
}
deferred = Q.defer();
rd = fs.createReadStream(source);
wr = fs.createWriteStream(target);
rd.on('error', function (err) {
deferred.reject(err);
});
wr.on('error', function (err) {
deferred.reject(err);
});
wr.on('close', function () {
deferred.resolve();
});
rd.pipe(wr);
return deferred.promise;
}
module.exports = copyFile;