From cbad188be8c37788a46418fd9b752c48b3ea6a29 Mon Sep 17 00:00:00 2001 From: Dave C-J Date: Wed, 8 Jan 2014 16:44:05 +0000 Subject: [PATCH] Update to fs.watch node to use new fs.notify API requires npm update fs.notify --- nodes/core/io/23-watch.js | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) 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(); -} -