diff --git a/nodes/core/io/23-watch.js b/nodes/core/io/23-watch.js index 3794a4744..515b93d39 100644 --- a/nodes/core/io/23-watch.js +++ b/nodes/core/io/23-watch.js @@ -16,30 +16,27 @@ var RED = require(process.env.NODE_RED_HOME+"/red/red"); var notify = require("fs.notify"); +var fs = require("fs"); +var sep = require("path").sep; function WatchNode(n) { - RED.nodes.createNode(this,n); + RED.nodes.createNode(this,n); - this.files = n.files.split(","); - for (var f in this.files) { - this.files[f] = this.files[f].trim(); - } - var node = this; - var notifications = new notify(this.files); - notifications.on('change', function (file) { - node.log('file changed '+file); - var msg = { payload: file, topic: JSON.stringify(node.files) }; - node.send(msg); - }); + this.files = n.files.split(","); + for (var f in this.files) { + this.files[f] = this.files[f].trim(); + } + this.p = (this.files.length == 1) ? this.files[0] : JSON.stringify(this.files); + var node = this; + var notifications = new notify(node.files); + notifications.on('change', function (file, event, path) { + if (fs.statSync(path).isDirectory()) { path = path + sep + file; } + var msg = { payload: path, topic: node.p, file: file}; + node.send(msg); + }); - this._close = function() { - notifications.close(); - } + this.close = function() { + notifications.close(); + } } - RED.nodes.registerType("watch",WatchNode); - -WatchNode.prototype.close = function() { - this._close(); -} -