64 lines
1.3 KiB
JavaScript
Raw Normal View History

2016-11-16 18:19:44 +01:00
var SimpleGit = require("simple-git");
var simpleGits = [];
var fs = require("fs");
var path = require("path");
2016-10-15 13:08:46 +02:00
var NodeHelper = require("node_helper");
module.exports = NodeHelper.create({
config: {},
updateTimer: null,
start: function () {
2016-11-16 18:19:44 +01:00
var srcdir = __dirname + "/../../";
fs.readdir(srcdir, function(err, names) {
if (err) {
console.error("Error reading dir " + srcdir + ": " + err);
return;
}
names.filter(function(name) {
return fs.statSync(path.join(srcdir, name)).isDirectory() && name != "node_modules";
}).forEach(function(name) {
simpleGits.push({"module": name, "git": SimpleGit(path.join(srcdir, name))});
});
});
2016-10-15 13:08:46 +02:00
},
socketNotificationReceived: function (notification, payload) {
if (notification === "CONFIG") {
this.config = payload;
this.preformFetch();
}
},
preformFetch() {
var self = this;
2016-11-16 18:19:44 +01:00
simpleGits.forEach(function(sg) {
sg.git.fetch().status(function(err, data) {
data.module = sg.module;
if (!err) {
self.sendSocketNotification("STATUS", data);
}
});
2016-10-15 13:08:46 +02:00
});
this.scheduleNextFetch(this.config.updateInterval);
},
scheduleNextFetch: function(delay) {
if (delay < 60 * 1000) {
delay = 60 * 1000
}
var self = this;
clearTimeout(this.updateTimer);
this.updateTimer = setTimeout(function() {
self.preformFetch();
}, delay);
}
2016-10-17 17:03:10 +02:00
});