command-line-args
Advanced tools
Comparing version 5.0.0-alpha.1 to 5.0.0-alpha.2
@@ -56,3 +56,3 @@ <a name="module_option-definition"></a> | ||
The most common values used are `String`, `Number` and `Boolean` but you can use a custom function, if you like: | ||
The most common values used are `String`, `Number` and `Boolean` but you can use a custom function, for example: | ||
@@ -59,0 +59,0 @@ ```js |
@@ -45,3 +45,2 @@ 'use strict' | ||
const optionUtil = require('./lib/option-util') | ||
const Option = require('./lib/option') | ||
@@ -84,3 +83,4 @@ const OutputClass = optionDefinitions.isGrouped() ? require('./lib/output-grouped') : require('./lib/output') | ||
const result = output.toObject({ skipUnknown: !options.partial }) | ||
const optionUtil = require('./lib/option-util') | ||
return options.camelCase ? optionUtil.camelCaseObject(result) : result | ||
} |
'use strict' | ||
const optionUtil = require('./option-util') | ||
const argvTools = require('argv-tools') | ||
@@ -8,2 +8,5 @@ /** | ||
/** | ||
* @alias module:argv-parser | ||
*/ | ||
class ArgvParser { | ||
@@ -17,3 +20,3 @@ /** | ||
constructor (definitions, options) { | ||
this.options = options || {} | ||
this.options = Object.assign({}, options) | ||
const Definitions = require('./option-definitions') | ||
@@ -25,10 +28,9 @@ /** | ||
const Argv = require('./argv-array') | ||
/** | ||
* Argv | ||
*/ | ||
this.argv = Argv.from(this.options.argv) | ||
if (this.argv.hasShortOptions()) { | ||
this.argv = argvTools.ArgvArray.from(this.options.argv) | ||
if (this.argv.hasCombinedShortOptions()) { | ||
const findReplace = require('find-replace') | ||
findReplace(this.argv, optionUtil.combined, arg => { | ||
findReplace(this.argv, argvTools.re.combinedShort, arg => { | ||
arg = arg.slice(1) | ||
@@ -41,3 +43,3 @@ return arg.split('').map(letter => ({ origArg: `-${arg}`, arg: '-' + letter })) | ||
/** | ||
* Yields one `{ event, name, value, arg, def }` pair for each arg in `process.argv` or the `options.argv`. | ||
* Yields one `{ event, name, value, arg, def }` argInfo object for each arg in `process.argv` (or `options.argv`). | ||
*/ | ||
@@ -68,3 +70,3 @@ * [Symbol.iterator] () { | ||
/* handle long or short option */ | ||
if (optionUtil.isOption(arg)) { | ||
if (argvTools.isOption(arg)) { | ||
def = definitions.get(arg) | ||
@@ -80,4 +82,4 @@ value = undefined | ||
/* handle --option-value notation */ | ||
} else if (optionUtil.isOptionEqualsNotation(arg)) { | ||
const matches = arg.match(optionUtil.optEquals) | ||
} else if (argvTools.isOptionEqualsNotation(arg)) { | ||
const matches = arg.match(argvTools.re.optEquals) | ||
def = definitions.get(matches[1]) | ||
@@ -98,3 +100,3 @@ if (def) { | ||
/* handle value */ | ||
} else if (optionUtil.isValue(arg)) { | ||
} else if (argvTools.isValue(arg)) { | ||
if (def) { | ||
@@ -101,0 +103,0 @@ value = arg |
@@ -48,3 +48,3 @@ 'use strict' | ||
* | ||
* The most common values used are `String`, `Number` and `Boolean` but you can use a custom function, if you like: | ||
* The most common values used are `String`, `Number` and `Boolean` but you can use a custom function, for example: | ||
* | ||
@@ -51,0 +51,0 @@ * ```js |
'use strict' | ||
const arrayify = require('array-back') | ||
const option = require('./option-util') | ||
const argvTools = require('argv-tools') | ||
const t = require('typical') | ||
@@ -14,6 +14,2 @@ | ||
class Definitions extends Array { | ||
clear () { | ||
this.length = 0 | ||
} | ||
/** | ||
@@ -117,6 +113,6 @@ * validate option definitions | ||
get (arg) { | ||
if (option.isOption(arg)) { | ||
return option.short.test(arg) | ||
? this.find(def => def.alias === option.short.name(arg)) | ||
: this.find(def => def.name === option.long.name(arg)) | ||
if (argvTools.isOption(arg)) { | ||
return argvTools.re.short.test(arg) | ||
? this.find(def => def.alias === argvTools.getOptionName(arg)) | ||
: this.find(def => def.name === argvTools.getOptionName(arg)) | ||
} else { | ||
@@ -123,0 +119,0 @@ return this.find(def => def.name === arg) |
'use strict' | ||
class ArgRegExp extends RegExp { | ||
name (arg) { | ||
return arg.match(this)[1] | ||
} | ||
} | ||
class OptEqualsRegExp extends RegExp { | ||
name (arg) { | ||
return arg.match(this)[1] | ||
} | ||
value (arg) { | ||
return arg.match(this)[2] | ||
} | ||
} | ||
function camelCaseObject (object) { | ||
@@ -30,10 +15,2 @@ const camelCase = require('lodash.camelcase') | ||
exports.short = new ArgRegExp('^-([^\\d-])$') | ||
exports.long = new ArgRegExp('^--(\\S+)') | ||
exports.combined = /^-[^\d-]{2,}$/ | ||
exports.isOption = arg => (exports.short.test(arg) || exports.long.test(arg)) && !exports.optEquals.test(arg) | ||
exports.optEquals = new OptEqualsRegExp('^(--\\S+?)=(.*)') | ||
exports.isOptionEqualsNotation = arg => exports.optEquals.test(arg) | ||
exports.isValue = arg => !(exports.isOption() || exports.combined.test(arg) || exports.optEquals.test(arg)) | ||
exports.VALUE_MARKER = 'EXPLICIT-VALUE-MARKER-656a659e9efb-' // must be unique | ||
exports.camelCaseObject = camelCaseObject |
{ | ||
"name": "command-line-args", | ||
"version": "5.0.0-alpha.1", | ||
"version": "5.0.0-alpha.2", | ||
"description": "A mature, feature-complete library to parse command-line options.", | ||
@@ -35,2 +35,3 @@ "repository": "https://github.com/75lb/command-line-args.git", | ||
"dependencies": { | ||
"argv-tools": "^0.1.1", | ||
"array-back": "^2.0.0", | ||
@@ -37,0 +38,0 @@ "find-replace": "^2.0.1", |
@@ -23,3 +23,3 @@ [![view on npm](https://img.shields.io/npm/v/command-line-args.svg)](https://www.npmjs.org/package/command-line-args) | ||
To access the values, first create a list of [option definitions](https://github.com/75lb/command-line-args/blob/next/doc/option-definition.md) describing your accepted options. The [`type`](https://github.com/75lb/command-line-args/blob/next/doc/option-definition.md#optiontype--function) property is a setter function (the value supplied is passed through this), giving you full control over the value received. | ||
To access the values, first create a list of [option definitions](https://github.com/75lb/command-line-args/blob/next/doc/option-definition.md) describing the options your application accepts. The [`type`](https://github.com/75lb/command-line-args/blob/next/doc/option-definition.md#optiontype--function) property is a setter function (the value supplied is passed through this), giving you full control over the value received. | ||
@@ -26,0 +26,0 @@ ```js |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
106536
5
43
2719
+ Addedargv-tools@^0.1.1
+ Addedargv-tools@0.1.2(transitive)