aboutsummaryrefslogtreecommitdiff
path: root/node_modules/nyc/bin/nyc.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/nyc/bin/nyc.js')
-rwxr-xr-xnode_modules/nyc/bin/nyc.js101
1 files changed, 101 insertions, 0 deletions
diff --git a/node_modules/nyc/bin/nyc.js b/node_modules/nyc/bin/nyc.js
new file mode 100755
index 000000000..5428c4e61
--- /dev/null
+++ b/node_modules/nyc/bin/nyc.js
@@ -0,0 +1,101 @@
+#!/usr/bin/env node
+
+var configUtil = require('../lib/config-util')
+var foreground = require('foreground-child')
+var NYC
+try {
+ NYC = require('../index.covered.js')
+} catch (e) {
+ NYC = require('../index.js')
+}
+var processArgs = require('../lib/process-args')
+
+var sw = require('spawn-wrap')
+var wrapper = require.resolve('./wrap.js')
+
+// parse configuration and command-line arguments;
+// we keep these values in a few different forms,
+// used in the various execution contexts of nyc:
+// reporting, instrumenting subprocesses, etc.
+var yargs = configUtil.decorateYargs(configUtil.buildYargs())
+var instrumenterArgs = processArgs.hideInstrumenteeArgs()
+var argv = yargs.parse(instrumenterArgs)
+var config = configUtil.loadConfig(instrumenterArgs)
+
+if (argv._[0] === 'report') {
+ // run a report.
+ process.env.NYC_CWD = process.cwd()
+
+ report(config)
+} else if (argv._[0] === 'check-coverage') {
+ checkCoverage(config)
+} else if (argv._[0] === 'instrument') {
+ // look in lib/commands/instrument.js for logic.
+} else if (argv._.length) {
+ // if instrument is set to false,
+ // enable a noop instrumenter.
+ if (!config.instrument) config.instrumenter = './lib/instrumenters/noop'
+ else config.instrumenter = './lib/instrumenters/istanbul'
+
+ var nyc = (new NYC(config))
+ if (config.clean) nyc.reset()
+ if (config.all) nyc.addAllFiles()
+
+ var env = {
+ NYC_CONFIG: JSON.stringify(config),
+ NYC_CWD: process.cwd(),
+ NYC_ROOT_ID: nyc.rootId,
+ NYC_INSTRUMENTER: config.instrumenter
+ }
+
+ if (config['babel-cache'] === false) {
+ // babel's cache interferes with some configurations, so is
+ // disabled by default. opt in by setting babel-cache=true.
+ env.BABEL_DISABLE_CACHE = process.env.BABEL_DISABLE_CACHE = '1'
+ }
+
+ sw([wrapper], env)
+
+ // Both running the test script invocation and the check-coverage run may
+ // set process.exitCode. Keep track so that both children are run, but
+ // a non-zero exit codes in either one leads to an overall non-zero exit code.
+ process.exitCode = 0
+ foreground(processArgs.hideInstrumenterArgs(
+ // use the same argv descrption, but don't exit
+ // for flags like --help.
+ configUtil.buildYargs().parse(process.argv.slice(2))
+ ), function (done) {
+ var mainChildExitCode = process.exitCode
+
+ if (config.checkCoverage) {
+ checkCoverage(config)
+ process.exitCode = process.exitCode || mainChildExitCode
+ if (!config.silent) report(config)
+ return done()
+ } else {
+ if (!config.silent) report(config)
+ return done()
+ }
+ })
+} else {
+ // I don't have a clue what you're doing.
+ yargs.showHelp()
+}
+
+function report (argv) {
+ process.env.NYC_CWD = process.cwd()
+
+ var nyc = new NYC(argv)
+ nyc.report()
+}
+
+function checkCoverage (argv, cb) {
+ process.env.NYC_CWD = process.cwd()
+
+ ;(new NYC(argv)).checkCoverage({
+ lines: argv.lines,
+ functions: argv.functions,
+ branches: argv.branches,
+ statements: argv.statements
+ })
+}