stacksight
Version:
stacksight node support
46 lines (30 loc) • 1.63 kB
JavaScript
;
var child = require('child_process');
module.exports = function(sts) {
(function update(){
child.exec('cd ' + process.cwd() + ' && npm outdated --json --long', function(err, stdout, stderr) {
var interval = 24*60*60*1000;
setTimeout(update, Math.ceil(Date.now()/interval)*interval - Date.now());
if (err || stderr) {
console.error(err || stderr);
}
var updates = JSON.parse(String(stdout));
var data = new Array();
for (var p in updates) {
var info = JSON.parse(String(child.execFileSync('npm', ['info', p, '--json']))); // not synchronus. may try via Object.keys and forEach loop.
data.push({
title: p ,
release_ts: new Date(info.time[updates[p].latest]).getTime()/1000 || '' ,
current_version: updates[p].current || 'not installed' ,
latest_version: updates[p].latest ,
type: updates[p].type ,
status: updates[p].wanted == updates[p].current ? 5 : 1 ,
description: info.description ,
release_link: info.homepage ,
download_link: ((info.repository.url || info.homepage).match(/http.*/) || [])[0]
});
}
sts.index('updates/update', {data: data});
})
})()
};