61 lines
1.8 KiB
JavaScript
61 lines
1.8 KiB
JavaScript
var NYC
|
|
try {
|
|
NYC = require('../../index.covered.js')
|
|
} catch (e) {
|
|
NYC = require('../../index.js')
|
|
}
|
|
|
|
exports.command = 'instrument <input> [output]'
|
|
|
|
exports.describe = 'instruments a file or a directory tree and writes the instrumented code to the desired output location'
|
|
|
|
exports.builder = function (yargs) {
|
|
return yargs
|
|
.option('require', {
|
|
alias: 'i',
|
|
default: [],
|
|
describe: 'a list of additional modules that nyc should attempt to require in its subprocess, e.g., babel-register, babel-polyfill.'
|
|
})
|
|
.option('extension', {
|
|
alias: 'e',
|
|
default: [],
|
|
describe: 'a list of extensions that nyc should handle in addition to .js'
|
|
})
|
|
.option('source-map', {
|
|
default: true,
|
|
type: 'boolean',
|
|
description: 'should nyc detect and handle source maps?'
|
|
})
|
|
.option('produce-source-map', {
|
|
default: false,
|
|
type: 'boolean',
|
|
description: "should nyc's instrumenter produce source maps?"
|
|
})
|
|
.option('instrument', {
|
|
default: true,
|
|
type: 'boolean',
|
|
description: 'should nyc handle instrumentation?'
|
|
})
|
|
.example('$0 instrument ./lib ./output', 'instrument all .js files in ./lib with coverage and output in ./output')
|
|
}
|
|
|
|
exports.handler = function (argv) {
|
|
// if instrument is set to false,
|
|
// enable a noop instrumenter.
|
|
if (!argv.instrument) argv.instrumenter = './lib/instrumenters/noop'
|
|
else argv.instrumenter = './lib/instrumenters/istanbul'
|
|
|
|
var nyc = new NYC({
|
|
instrumenter: argv.instrumenter,
|
|
sourceMap: argv.sourceMap,
|
|
produceSourceMap: argv.produceSourceMap,
|
|
extension: argv.extension,
|
|
require: argv.require
|
|
})
|
|
|
|
nyc.instrumentAllFiles(argv.input, argv.output, function (err) {
|
|
if (err) console.error(err.message)
|
|
process.exit(1)
|
|
})
|
|
}
|