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
|
|
|
});
|