summaryrefslogtreecommitdiffstats
path: root/lib/utils/fs.js
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2016-12-22 10:18:38 +0100
committerGitHub <noreply@github.com>2016-12-22 10:18:38 +0100
commit194ebc3da9641ff96f083f9d8ab43c2d27944f9a (patch)
treec50988f32ccf18df93ae7ab40be78e9459642818 /lib/utils/fs.js
parent64ccb6b00b4b63fa0e516d4e35351275b34f8c07 (diff)
parent16af264360e48e8a833e9efa9ab8d194574dbc70 (diff)
downloadgitbook-194ebc3da9641ff96f083f9d8ab43c2d27944f9a.zip
gitbook-194ebc3da9641ff96f083f9d8ab43c2d27944f9a.tar.gz
gitbook-194ebc3da9641ff96f083f9d8ab43c2d27944f9a.tar.bz2
Merge pull request #1543 from GitbookIO/dream
React for rendering website with plugins
Diffstat (limited to 'lib/utils/fs.js')
-rw-r--r--lib/utils/fs.js170
1 files changed, 0 insertions, 170 deletions
diff --git a/lib/utils/fs.js b/lib/utils/fs.js
deleted file mode 100644
index 35839a3..0000000
--- a/lib/utils/fs.js
+++ /dev/null
@@ -1,170 +0,0 @@
-var fs = require('graceful-fs');
-var mkdirp = require('mkdirp');
-var destroy = require('destroy');
-var rmdir = require('rmdir');
-var tmp = require('tmp');
-var request = require('request');
-var path = require('path');
-var cp = require('cp');
-var cpr = require('cpr');
-
-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;
-}
-
-// 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;
-}
-
-// Generate temporary file
-function genTmpFile(opts) {
- return Promise.nfcall(tmp.file, opts)
- .get(0);
-}
-
-// Generate temporary dir
-function genTmpDir(opts) {
- return Promise.nfcall(tmp.dir, opts)
- .get(0);
-}
-
-// Download an image
-function download(uri, dest) {
- return writeStream(dest, request(uri));
-}
-
-// Find a filename available in a folder
-function uniqueFilename(base, filename) {
- var ext = path.extname(filename);
- filename = path.resolve(base, filename);
- filename = path.join(path.dirname(filename), path.basename(filename, ext));
-
- var _filename = filename+ext;
-
- var i = 0;
- while (fs.existsSync(filename)) {
- _filename = filename + '_' + i + ext;
- i = i + 1;
- }
-
- return Promise(path.relative(base, _filename));
-}
-
-// Create all required folder to create a file
-function ensureFile(filename) {
- var base = path.dirname(filename);
- return Promise.nfcall(mkdirp, base);
-}
-
-// Remove a folder
-function rmDir(base) {
- return Promise.nfcall(rmdir, base, {
- fs: fs
- });
-}
-
-/**
- Assert a file, if it doesn't exist, call "generator"
-
- @param {String} filePath
- @param {Function} generator
- @return {Promise}
-*/
-function assertFile(filePath, generator) {
- return fileExists(filePath)
- .then(function(exists) {
- if (exists) return;
-
- return generator();
- });
-}
-
-/**
- Pick a file, returns the absolute path if exists, undefined otherwise
-
- @param {String} rootFolder
- @param {String} fileName
- @return {String}
-*/
-function pickFile(rootFolder, fileName) {
- var result = path.join(rootFolder, fileName);
- if (fs.existsSync(result)) {
- return result;
- }
-
- return undefined;
-}
-
-/**
- Ensure that a directory exists and is empty
-
- @param {String} folder
- @return {Promise}
-*/
-function ensureFolder(rootFolder) {
- return rmDir(rootFolder)
- .fail(function() {
- return Promise();
- })
- .then(function() {
- return Promise.nfcall(mkdirp, rootFolder);
- });
-}
-
-module.exports = {
- exists: fileExists,
- existsSync: fs.existsSync,
- mkdirp: Promise.nfbind(mkdirp),
- readFile: Promise.nfbind(fs.readFile),
- writeFile: Promise.nfbind(fs.writeFile),
- assertFile: assertFile,
- pickFile: pickFile,
- stat: Promise.nfbind(fs.stat),
- statSync: fs.statSync,
- readdir: Promise.nfbind(fs.readdir),
- writeStream: writeStream,
- readStream: fs.createReadStream,
- copy: Promise.nfbind(cp),
- copyDir: Promise.nfbind(cpr),
- tmpFile: genTmpFile,
- tmpDir: genTmpDir,
- download: download,
- uniqueFilename: uniqueFilename,
- ensureFile: ensureFile,
- ensureFolder: ensureFolder,
- rmDir: rmDir
-};