#!/usr/bin/env node var argv = require('minimist')(process.argv.slice(2)), istanbulDiff = require('../lib/index.js'), fs = require('fs'), depth = argv.depth, pick = argv.pick, args = argv._; // console.log(argv, depth); if (args.length !== 1 && args.length !== 2) { console.log('Usage: \n istanbul-diff coverage-summary-before.json coverage-summary-after.json'); console.log(''); console.log('Options:'); console.log(' --depth diff to depth n'); console.log(' --pick pick out diff, e.g. lines.pct (comma separated)'); console.log(' --lines include linesCovered (can be very long)'); console.log(' --json output json diff (always exits successfully)'); console.log(' --json-compact output compact json diff (always exits successfully)'); console.log(' --detail [] detailed report. =lines,statements,functions,branches or blank for all'); console.log(' --recurse recurse through sub folders (up to depth), otherwise print only root'); console.log(''); console.log(' --nomotivate disabling compliment, or not!'); console.log(' --nocolor disable colorized output'); console.log(' --nofail do not exit with code 1 if coverage decreases'); console.log(' --brief suppress no-change messages'); console.log('If only one file is give, summarizes coverage for that file.'); return; } if (pick) { pick = pick.split(','); } var fileLeft = args[0], fileRight = args[1], options = { ignoreLinesCovered: !argv.lines, depth : depth, pick : pick, nomotivate : argv.nomotivate, detail : !pick && argv.detail, // pick and detail don't work well together nocolor : argv.nocolor, recurse : argv.recurse, brief : argv.brief, single : !fileRight }, left = JSON.parse(fs.readFileSync(fileLeft)), right = fileRight && JSON.parse(fs.readFileSync(fileRight)), delta = istanbulDiff.diff(left, right, options), result; // console.log(delta) if (argv.json) { console.log(JSON.stringify(delta, null, 2)); } else if (argv['json-compact']) { console.log(JSON.stringify(delta, null, 0)); } else { result = istanbulDiff.print(delta, options); console.log(result.msg); if (options.motivate && options.detail === true) { console.log(istanbulDiff.print.compliment(!result.regressed)); } if (!argv.nofail && result.regressed) { process.exit(1); } }