all files / src/ watcher.js

92.59% Statements 25/27
66.67% Branches 4/6
80% Functions 4/5
92.59% Lines 25/27
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46                                         
'use strict';
var chokidar = require('chokidar');
var eslint = require('eslint');
var chalk = require('chalk');
 
var success = require('./formatters/helpers/success');
var formatter = require('./formatters/simple-detail');
var logger = require('./log')('watcher');
logger.debug('Loaded');
 
var events = {
  change: 'change'
};
 
var cli = new eslint.CLIEngine();
 
function successMessage(result) {
  logger.debug('result: %o', result);
  Eif (!result.errorCount && !result.warningCount) {
    return success(result) + chalk.grey(' (' + new Date().toLocaleTimeString() + ')');
  }
  return '';
}
 
function lintFile(path, config) {
  logger.debug('lintFile: %s', path);
  var results = cli.executeOnFiles([path], config).results;
  logger.log(successMessage(results[0]));
  logger.log(formatter(results));
}
 
module.exports = function watcher(options) {
  chokidar.watch(options._)
    .on(events.change, function (path) {
      logger.debug('Changed:', path);
      Eif(!cli.isPathIgnored(path)){
        var config = cli.getConfigForFile(path);
        lintFile(path, config);
      }
    }).on('error', function(err){
      logger.log(err);
    });
 
  logger.debug('Watching: %o', options._);
};