simplywatch
Version:
Watches files and upon change executes a command for each file INDIVIDUALLY with file-related params
25 lines (21 loc) • 773 B
text/coffeescript
fs = require 'fs-jetpack'
retry = require 'promise-retry'
testWatcher = require('@danielkalen/chokidar').watch([], {ignoreInitial:true})
module.exports = (filePath)->
actualChange = new Promise (resolve)-> testWatcher.once 'change', resolve
Promise.resolve()
.then ()-> testWatcher.add(filePath)
.then ()-> fs.readAsync(filePath)
.delay(0)
# .delay if process.platform is 'darwin' then 0 else 200
# .then (contents)-> fs.writeAsync(filePath, contents)
.then (contents='')->
retry (tryAgain)->
fs.writeAsync(filePath, contents)
new Promise (resolve, reject)->
actualChange.then(resolve)
setTimeout (-> reject new Error),300
.catch(tryAgain)
, {retries:200, minTimeout:100}
.timeout(3000)
.catch Promise.TimeoutError, ()->;