Normalize fs access

This commit is contained in:
Samy Pessé
2016-02-11 13:58:26 +01:00
parent 87d90a65ac
commit f47208528b
4 changed files with 100 additions and 24 deletions
+3 -2
View File
@@ -89,9 +89,10 @@ Page.prototype.parse = function() {
.then(that.update);
})
// Render markup
// Render markup using the parser
.then(function() {
return that.parser.page(that.content);
return that.parser.page(that.content)
.then(that.update);
});
};
+7 -14
View File
@@ -1,9 +1,8 @@
var _ = require('lodash');
var util = require('util');
var path = require('path');
var fs = require('graceful-fs');
var mkdirp = require('mkdirp');
var fs = require('../utils/fs');
var Promise = require('../utils/promise');
var BaseFS = require('./');
@@ -14,23 +13,17 @@ util.inherits(NodeFS, BaseFS);
// Check if a file exists, run a Promise(true) if that's the case, Promise(false) otherwise
NodeFS.prototype.exists = function(filename) {
var d = Promise.defer();
fs.exists(filename, function(exists) {
d.resolve(exists);
});
return d.promise;
return fs.exists(filename);
};
// Read a file and returns a promise with the content as a buffer
NodeFS.prototype.read = function(filename) {
return Promise.nfcall(fs.readFile, filename);
return fs.readFile(filename);
};
// Read stat infos about a file
NodeFS.prototype.stat = function(filename) {
return Promise.nfcall(fs.stat, filename);
return fs.stat(filename);
};
// Write a file and returns a promise
@@ -39,16 +32,16 @@ NodeFS.prototype.write = function(filename, buffer) {
return Promise()
.then(function() {
if (!folder) return;
return Promise.nfcall(mkdirp, folder);
return fs.mkdirp(folder);
})
.then(function() {
return Promise.nfcall(fs.writeFile, filename, buffer);
return fs.writeFile(filename, buffer);
});
};
// List files in a directory
NodeFS.prototype.readdir = function(folder) {
return Promise.nfcall(fs.readdir, folder)
return fs.readdir(folder)
.then(function(files) {
return _.chain(files)
.map(function(file) {
+24 -8
View File
@@ -1,12 +1,11 @@
var _ = require('lodash');
var fs = require('graceful-fs');
var mkdirp = require('mkdirp');
var Ignore = require('ignore');
var path = require('path');
var Promise = require('./utils/promise');
var pathUtil = require('./utils/path');
var error = require('./utils/error');
var fs = require('./utils/fs');
var generators = require('./generators');
var PluginsManager = require('./plugins');
@@ -44,15 +43,32 @@ Output.prototype.resolve = function(filename) {
// Write a file/buffer to the output folder
Output.prototype.writeFile = function(filename, buf) {
filename = this.resolve(filename);
var folder = path.dirname(filename);
var that = this;
// Ensure fodler exists
return Promise.nfcall(mkdirp, folder)
return Promise()
.then(function() {
filename = that.resolve(filename);
var folder = path.dirname(filename);
// Ensure fodler exists
return fs.mkdirp(folder);
})
// Write the file
.then(function() {
return Promise.nfcall(fs.writeFile, filename, buf);
return fs.writeFile(filename, buf);
});
};
// Copy a file to the output
Output.prototype.copyFile = function(from, to) {
var that = this;
return Promise()
.then(function() {
to = that.resolve(to);
return fs.copy(from, to);
});
};
@@ -74,7 +90,7 @@ Output.prototype.generate = function() {
// Create the output folder
.then(function() {
return Promise.nfcall(mkdirp, that.root());
return fs.mkdirp(that.root());
})
// Initialize the generation
+66
View File
@@ -0,0 +1,66 @@
var fs = require('graceful-fs');
var mkdirp = require('mkdirp');
var destroy = require('destroy');
var Promise = require('./promise');
// Write a stream to a file
function writeStream(filename, st) {
var d = Promise.defer();
var wstream = fs.createWriteStream(filename);
var cleanup = function() {
destroy(wstream);
wstream.removeAllListeners();
};
wstream.on('finish', function () {
cleanup();
d.resolve();
});
wstream.on('error', function (err) {
cleanup();
d.reject(err);
});
st.on('error', function(err) {
cleanup();
d.reject(err);
});
st.pipe(wstream);
return d.promise;
}
// Copy a file using stream
function copyFile(from, to) {
return Promise()
.then(function() {
return writeStream(to, fs.createReadStream(from));
});
}
// Return a promise resolved with a boolean
function fileExists(filename) {
var d = Promise.defer();
fs.exists(filename, function(exists) {
d.resolve(exists);
});
return d.promise;
}
module.exports = {
exists: fileExists,
mkdirp: Promise.nfbind(mkdirp),
readFile: Promise.nfbind(fs.readFile),
writeFile: Promise.nfbind(fs.writeFile),
stat: Promise.nfbind(fs.stat),
statSync: fs.statSync,
readdir: Promise.nfbind(fs.readdir),
writeStream: writeStream,
copy: copyFile
};