diff options
Diffstat (limited to 'lib/utils/fs.js')
-rw-r--r-- | lib/utils/fs.js | 58 |
1 files changed, 40 insertions, 18 deletions
diff --git a/lib/utils/fs.js b/lib/utils/fs.js index e434953..21956a0 100644 --- a/lib/utils/fs.js +++ b/lib/utils/fs.js @@ -8,8 +8,8 @@ var Ignore = require("fstream-ignore"); var fsUtils = { tmp: { - file: function() { - return Q.nfcall(tmp.file.bind(tmp)).get(0) + file: function(opt) { + return Q.nfcall(tmp.file.bind(tmp), opt).get(0) }, dir: function() { return Q.nfcall(tmp.dir.bind(tmp)).get(0) @@ -19,19 +19,8 @@ var fsUtils = { stat: Q.denodeify(fs.stat), readdir: Q.denodeify(fs.readdir), readFile: Q.denodeify(fs.readFile), - writeFile: function(filename, data, options) { - var d = Q.defer(); - - try { - fs.writeFileSync(filename, data, options) - } catch(err) { - d.reject(err); - } - d.resolve(); - - - return d.promise; - }, + writeFile: writeFile, + writeStream: writeStream, mkdirp: Q.denodeify(fsExtra.mkdirp), copy: Q.denodeify(fsExtra.copy), remove: Q.denodeify(fsExtra.remove), @@ -44,7 +33,40 @@ var fsUtils = { existsSync: fs.existsSync.bind(fs), readFileSync: fs.readFileSync.bind(fs), clean: cleanFolder, - getUniqueFilename: getUniqueFilename + getUniqueFilename: getUniqueFilename, +} + +// Write a file +function writeFile(filename, data, options) { + var d = Q.defer(); + + try { + fs.writeFileSync(filename, data, options) + } catch(err) { + d.reject(err); + } + d.resolve(); + + + return d.promise; +} + +// Write a stream to a file +function writeStream(filename, st) { + var d = Q.defer(); + + var wstream = fs.createWriteStream(filename); + + wstream.on('finish', function () { + d.resolve(); + }); + wstream.on('error', function (err) { + d.reject(err); + }); + + st.pipe(wstream); + + return d.promise; } // Find a filename available @@ -62,7 +84,7 @@ function getUniqueFilename(base) { } return filename; -}; +} // List files in a directory @@ -145,6 +167,6 @@ function cleanFolder(root) { return d.promise; }); -}; +} module.exports = fsUtils; |