You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
972 B
39 lines
972 B
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; |
|
};
|
|
|