#!/usr/bin/env node 'use strict'; const program = require('commander'); const updateNotifier = require('update-notifier'); const cint = require('cint'); const _ = require('lodash'); const ncu = require('../lib/npm-check-updates'); const pkg = require('../package.json'); // check if a new version of ncu is available and print an update notification const notifier = updateNotifier({pkg}); if (notifier.update && notifier.update.latest !== pkg.version) { notifier.notify({defer: false}); } program .description('[filter] is a list or regex of package names to check (all others will be ignored).') .usage('[options] [filter]') .option('--configFilePath ', 'rc config file path (default: directory of `packageFile` or ./ otherwise)') .option('--configFileName ', 'rc config file name (default: .ncurc.{json,yml,js})') .option('--cwd ', 'Used as current working directory for `spawn` in npm listing') .option('--dep ', 'check only a specific section(s) of dependencies: prod|dev|peer|optional|bundle (comma-delimited)') .option('-e, --error-level ', 'set the error-level. 1: exits with error code 0 if no errors occur. 2: exits with error code 0 if no packages need updating (useful for continuous integration). Default is 1.', cint.partialAt(parseInt, 1, 10), 1) .option('--engines-node', 'upgrade to version which satisfies engines.node range') .option('-f, --filter ', 'include only package names matching the given string, comma-or-space-delimited list, or /regex/') .option('-g, --global', 'check global packages instead of in the current project') // program.json is set to true in programInit if any options that begin with 'json' are true .option('-i, --interactive', 'Enable interactive prompts for each dependency; implies -u unless one of the json options are set') .option('-j, --jsonAll', 'output new package file instead of human-readable message') .option('--jsonDeps', 'Will return output like `jsonAll` but only lists `dependencies`, `devDependencies`, and `optionalDependencies` of the new package data.') .option('--jsonUpgraded', 'output upgraded dependencies in json') .option('-l, --loglevel ', 'what level of logs to report: silent, error, minimal, warn, info, verbose, silly (default: warn)', 'warn') .option('-m, --minimal', 'do not upgrade newer versions that are already satisfied by the version range according to semver') .option('-n, --newest', 'find the newest versions available instead of the latest stable versions') .option('-p, --packageManager ', 'npm (default) or bower', 'npm') .option('--packageData', 'include stringified package file (use stdin instead)') .option('--packageFile ', 'package file location (default: ./package.json)') .option('--pre ', 'Include -alpha, -beta, -rc. Default: 0. Default with --newest and --greatest: 1') .option('--prefix ', 'Used as current working directory in bower and npm') .option('-r, --registry ', 'specify third-party npm registry') .option('--removeRange', 'remove version ranges from the final package version') .option('-s, --silent', "don't output anything (--loglevel silent)") .option('--semverLevel ', 'find the highest version within "major" or "minor"') .option('-t, --greatest', 'find the highest versions available instead of the latest stable versions') .option('--timeout ', 'a global timeout in ms') .option('-u, --upgrade', 'overwrite package file') .option('-x, --reject ', 'exclude packages matching the given string, comma-or-space-delimited list, or /regex/') .option('-v, --version', pkg.version, () => { console.log(pkg.version); process.exit(0); }) .option('-V', '', () => { console.log(pkg.version); process.exit(0); }); program.parse(process.argv); const {configFileName, configFilePath, packageFile} = program; const rcConfig = ncu.getNcurc({ configFileName, configFilePath, packageFile }); const rcArguments = rcConfig ? _.flatten(_.map(rcConfig, (value, name) => value === true ? [`--${name}`] : [`--${name}`, value] )) : []; const combinedArguments = process.argv.slice(0,2).concat(rcArguments, process.argv.slice(2)); program.parse(combinedArguments); program.cli = true; program.filter = program.args.join(' ') || program.filter; ncu.run(program);