mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-18 16:45:11 +00:00
67 lines
1.4 KiB
JavaScript
67 lines
1.4 KiB
JavaScript
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
|
|
};
|