mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-19 17:15:24 +00:00
Normalize fs access
This commit is contained in:
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
};
|
||||
Reference in New Issue
Block a user