diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-02-18 15:08:34 +0100 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-02-18 15:08:34 +0100 |
commit | b99c499d2ea67268760a7c8265a0669b016a56f1 (patch) | |
tree | f7e95ab1096abaf9579bf670205b1fb5b8b848b8 /lib/cli/watch.js | |
parent | 709b388dfcc641fab25d297618b6ffe49f5cd677 (diff) | |
download | gitbook-b99c499d2ea67268760a7c8265a0669b016a56f1.zip gitbook-b99c499d2ea67268760a7c8265a0669b016a56f1.tar.gz gitbook-b99c499d2ea67268760a7c8265a0669b016a56f1.tar.bz2 |
Add back serve command
Diffstat (limited to 'lib/cli/watch.js')
-rw-r--r-- | lib/cli/watch.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/cli/watch.js b/lib/cli/watch.js new file mode 100644 index 0000000..36c42cc --- /dev/null +++ b/lib/cli/watch.js @@ -0,0 +1,42 @@ +var _ = require('lodash'); +var path = require('path'); +var chokidar = require('chokidar'); +var parsers = require('gitbook-parsers'); + +var Promise = require('../utils/promise'); + +// Watch a folder and resolve promise once a file is modified +function watch(dir) { + var d = Promise.defer(); + dir = path.resolve(dir); + + var toWatch = [ + 'book.json', 'book.js' + ]; + + // Watch all parsable files + _.each(parsers.extensions, function(ext) { + toWatch.push('**/*'+ext); + }); + + var watcher = chokidar.watch(toWatch, { + cwd: dir, + ignored: '_book/**', + ignoreInitial: true + }); + + watcher.once('all', function(e, filepath) { + watcher.close(); + + d.resolve(filepath); + }); + watcher.once('error', function(err) { + watcher.close(); + + d.reject(err); + }); + + return d.promise; +} + +module.exports = watch; |