diff --git a/lib/watch.js b/lib/watch.js index d753c8f2..3d7b417d 100644 --- a/lib/watch.js +++ b/lib/watch.js @@ -37,70 +37,58 @@ Watch.prototype.watchAssets = function(embarkConfig, callback) { filesToWatch.push(appConfig[targetFile]); } - this.logger.trace(filesToWatch); - - var assetWatcher = chokidar.watch(filesToWatch, { - ignored: /[\/\\]\./, persistent: true, ignoreInitial: true, followSymlinks: true - }); - - assetWatcher - .on('add', path => { - self.logger.info(`File ${path} has been added`); - self.trigger('rebuildAssets', path); - }) - .on('change', path => { - self.logger.info(`File ${path} has been changed`); - self.trigger('rebuildAssets', path); - }) - .on('unlink', path => { - self.logger.info(`File ${path} has been removed`); - self.trigger('rebuildAssets', path); - }) - .on('ready', () => callback()); + this.watchFiles( + filesToWatch, + function(eventName, path) { + self.logger.info(`${eventName}: ${path}`); + self.trigger('rebuildAssets', path); + }, + function() { + callback(); + } + ); }; Watch.prototype.watchContracts = function(embarkConfig, callback) { - var contractsToWatch = []; - contractsToWatch.push(embarkConfig.contracts); - - this.logger.trace(contractsToWatch); - - var contractWatcher = chokidar.watch(contractsToWatch, { - ignored: /[\/\\]\./, persistent: true, ignoreInitial: true, followSymlinks: true - }); - - contractWatcher - .on('add', path => { - self.logger.info(`File ${path} has been added`); - self.trigger('redeploy', path); - }) - .on('change', path => { - self.logger.info(`File ${path} has been changed`); - self.trigger('redeploy', path); - }) - .on('unlink', path => this.logger.info(`File ${path} has been removed`)) - .on('ready', () => callback()); + var self = this; + this.watchFiles( + [embarkConfig.contracts], + function(eventName, path) { + self.logger.info(`${eventName}: ${path}`); + self.trigger('redeploy', path); + }, + function() { + callback(); + } + ); }; Watch.prototype.watchConfigs = function(callback) { - var configWatcher = chokidar.watch("config/**/contracts.json", { + var self = this; + this.watchFiles( + "config/**/contracts.json", + function(eventName, path) { + self.logger.info(`${eventName}: ${path}`); + self.trigger('redeploy', path); + }, + function() { + callback(); + } + ); +}; + +Watch.prototype.watchFiles = function(files, changeCallback, doneCallback) { + this.logger.trace(files); + + var configWatcher = chokidar.watch(files, { ignored: /[\/\\]\./, persistent: true, ignoreInitial: true, followSymlinks: true }); configWatcher - .on('add', path => { - self.logger.info(`File ${path} has been added`); - self.trigger('redeploy', path); - }) - .on('change', path => { - self.logger.info(`File ${path} has been changed`); - self.trigger('redeploy', path); - }) - .on('unlink', path => { - self.logger.info(`File ${path} has been removed`); - self.trigger('redeploy', path); - }) - .on('ready', () => callback()); + .on('add', path => changeCallback('add', path)) + .on('change', path => changeCallback('add', path)) + .on('unlink', path => changeCallback('add', path)) + .on('ready', doneCallback); }; Watch.prototype.on = function(eventName, callback) {