roar-agent
Version:
The Node.js Roar Agent that listens for and executes scan jobs
43 lines (38 loc) • 1.82 kB
JavaScript
var david = require('david');
var exec = require('child_process').exec;
var fs = require('fs');
david.getUpdatedDependencies(require('./package.json'),
{ dev: false, stable: true },
function(err, list) {
var count1 = Object.keys(list).length;
var badge = 'https://img.shields.io/badge/dependencies-up--to--date-brightgreen.svg';
if (count1 > 0) {
badge = 'https://img.shields.io/badge/dependencies-' + count1 + '%20out%20of%20date-brightgreen.svg';
}
david.getUpdatedDependencies(require('./package.json'),
{ dev: true, stable: true },
function(err, list) {
var count2 = Object.keys(list).length;
var devBadge = 'https://img.shields.io/badge/dev--dependencies-up--to--date-brightgreen.svg';
if (count1 > 0) {
devBadge = 'https://img.shields.io/badge/dev--dependencies-' + count1 + '%20out%20of%20date-brightgreen.svg';
}
exec('nsp check --output json', function(error, stdout, stderr) {
var t = stderr.replace(/(?:\r\n|\r|\n)/g, '');
try {
var output = JSON.parse(t);
var vulns = 'https://img.shields.io/badge/vulnerabilities-' + output.length + '%20found-red.svg';
} catch (err) {
var vulns = 'https://img.shields.io/badge/vulnerabilities-None-brightgreen.svg';
}
// Update the README
var data = fs.readFileSync('./README.md', 'utf-8').toString();
data = data.replace(/(\[\!\[Dependencies\]\()(.*)(\)\].*\))/, '$1' + badge + '$3');
data = data.replace(/(\[\!\[Dev Dependencies\]\()(.*)(\)\].*\))/, '$1' + devBadge + '$3');
data = data.replace(/(\[\!\[Vulnerabilities\]\()(.*)(\)\].*\))/, '$1' + vulns + '$3');
fs.writeFileSync('./README.md', data, 'utf-8');
});
}
)
}
)