summaryrefslogtreecommitdiffstats
path: root/lib/utils/fs.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/utils/fs.js')
-rw-r--r--lib/utils/fs.js58
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;