1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #!/usr/bin/env node
- var argv = require('minimist')(process.argv.slice(2))
- var execshell = require('exec-sh')
- var path = require('path')
- var watch = require('./main.js')
- if(argv._.length === 0) {
- console.error([
- 'Usage: watch <command> [...directory]',
- '[--wait=<seconds>]',
- '[--filter=<file>]',
- '[--interval=<seconds>]',
- '[--ignoreDotFiles]',
- '[--ignoreUnreadable]',
- '[--ignoreDirectoryPattern]'
- ].join(' '))
- process.exit()
- }
- var watchTreeOpts = {}
- var command = argv._[0]
- var dirs = []
- var i
- var argLen = argv._.length
- if (argLen > 1) {
- for(i = 1; i< argLen; i++) {
- dirs.push(argv._[i])
- }
- } else {
- dirs.push(process.cwd())
- }
- var waitTime = Number(argv.wait || argv.w)
- if (argv.interval || argv.i) {
- watchTreeOpts.interval = Number(argv.interval || argv.i || 0.2);
- }
- if(argv.ignoreDotFiles || argv.d)
- watchTreeOpts.ignoreDotFiles = true
- if(argv.ignoreUnreadable || argv.u)
- watchTreeOpts.ignoreUnreadableDir = true
- if(argv.ignoreDirectoryPattern || argv.p) {
- var match = (argv.ignoreDirectoryPattern || argv.p).match(/^\/(.*)\/([gimuy]*)$/);
- watchTreeOpts.ignoreDirectoryPattern = new RegExp(match[1], match[2])
- }
- if(argv.filter || argv.f) {
- try {
- watchTreeOpts.filter = require(path.resolve(process.cwd(), argv.filter || argv.f))
- } catch (e) {
- console.error(e)
- process.exit(1)
- }
- }
- var wait = false
- var dirLen = dirs.length
- var skip = dirLen - 1
- for(i = 0; i < dirLen; i++) {
- var dir = dirs[i]
- console.error('> Watching', dir)
- watch.watchTree(dir, watchTreeOpts, function (f, curr, prev) {
- if(skip) {
- skip--
- return
- }
- if(wait) return
- execshell(command)
- if(waitTime > 0) {
- wait = true
- setTimeout(function () {
- wait = false
- }, waitTime * 1000)
- }
- })
- }
|