roar-sdk
Version:
Node.js SDK for developing Roar inspectors
62 lines (56 loc) • 2.64 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';
}
exec('npm run coverage', function(error, stdout, stderr) {
var lines = stdout.split(/(?:\r\n|\r|\n)/);
var cccov;
lines.forEach(function(l) {
var m = l.match(/^Statements\s*\:\s*(\d+\.\d+\%)/);
if (m) {
cccov = m;
}
});
var ccbadge;
console.log('m', cccov, error, stdout, stderr);
if (cccov && cccov[1]) {
ccbadge = 'https://img.shields.io/badge/code--coverage-' + cccov[1] + '-brightgreen.svg';
} else {
ccbadge = 'https://img.shields.io/badge/code--coverage-Unknown-lightgrey.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');
data = data.replace(/(\[\!\[Code Coverage\]\()(.*)(\)\].*\))/, '$1' + ccbadge + '$3');
fs.writeFileSync('./README.md', data, 'utf-8');
});
});
}
)
}
)