43 lines
885 B
JavaScript
43 lines
885 B
JavaScript
var _ = require('lodash');
|
|
var path = require('path');
|
|
var chokidar = require('chokidar');
|
|
|
|
var Promise = require('../utils/promise');
|
|
var parsers = require('../parsers');
|
|
|
|
// 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;
|