aboutsummaryrefslogtreecommitdiff
path: root/node_modules/glob-watcher/index.js
blob: 907defd4efee01520c97947a081e5edc6ae3284b (plain)
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
var gaze = require('gaze');
var EventEmitter = require('events').EventEmitter;

module.exports = function(glob, opts, cb) {
  var out = new EventEmitter();

  if (typeof opts === 'function') {
    cb = opts;
    opts = {};
  }

  var watcher = gaze(glob, opts, function(err, rwatcher){
    if (err) out.emit('error', err);
    rwatcher.on('all', function(evt, path, old){
      var outEvt = {type: evt, path: path};
      if(old) outEvt.old = old;
      out.emit('change', outEvt);
      if(cb) cb(outEvt);
    });
  });

  watcher.on('end', out.emit.bind(out, 'end'));
  watcher.on('error', out.emit.bind(out, 'error'));
  watcher.on('ready', out.emit.bind(out, 'ready'));
  watcher.on('nomatch', out.emit.bind(out, 'nomatch'));

  out.end = function(){
    return watcher.close();
  };
  out.add = function(){
    return watcher.add.apply(watcher, arguments);
  };
  out.remove = function(){
    return watcher.remove();
  };
  out._watcher = watcher;

  return out;
};