Socket
Socket
Sign inDemoInstall

command-line-args

Package Overview
Dependencies
Maintainers
1
Versions
74
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

command-line-args - npm Package Compare versions

Comparing version 0.1.0 to 0.2.0

test/grouping.js

86

lib/command-line-args.js

@@ -1,32 +0,46 @@

var w = require("wodge");
var w = require("wodge"),
util = require("util"),
Design = require("nature").Design;
module.exports = parse;
module.exports = CliArgs;
/**
docs TODO
*/
function parse(optionDefinitions, argv){
function CliArgs(options){
if (!(this instanceof CliArgs)) return new CliArgs(options);
options.forEach(function(option){
if (option.options) option.attributes = option.options;
});
Design.call(this, options);
}
util.inherits(CliArgs, Design);
CliArgs.prototype.parse = function(argv){
var shortArg = /^-(\w)/,
longArg = /^--(\w+)/,
output = {},
longArg = /^--([\w-]+)/,
model = this.create(),
defaultValues = [],
self = this,
arg;
argv = argv ? argv.slice(0) : process.argv.slice(2);
function setOutputValue(option, value){
model[option.name] = value;
}
function setOutput(optionName){
var option = w.findWhere(optionDefinitions, { name: optionName })
|| w.findWhere(optionDefinitions, { alias: optionName });
var option = w.findWhere(self._attributes, { name: optionName })
|| w.findWhere(self._attributes, { alias: optionName });
if (option){
if(option.type === Boolean){
output[option.name] = true;
setOutputValue(option, true);
} else if (argv.length) {
if (typeof option.type === "function"){
if (option.type === Array){
output[option.name] = spliceWhile(argv, /^\w+/);
setOutputValue(option, spliceWhile(argv, /^\w+/));
} else {
output[option.name] = option.type(argv.shift());
setOutputValue(option, option.type(argv.shift()));
}
} else {
output[option.name] = argv.shift();
setOutputValue(option, argv.shift());
}

@@ -41,11 +55,3 @@ } else {

};
/* set defaults */
var optionsWithDefault = optionDefinitions.filter(function(option){
return option.value;
});
optionsWithDefault.forEach(function(option){
output[option.name] = option.value;
});
while (typeof(arg = argv.shift()) !== "undefined"){

@@ -60,21 +66,35 @@ if (longArg.test(arg)){

}
if (defaultValues.length > 0){
var defaultOption = w.findWhere(optionDefinitions, { defaultOption: true });
var defaultOption = w.findWhere(this._attributes, { defaultOption: true });
if (defaultOption){
if (defaultOption.type === Array){
if (Array.isArray(output[defaultOption.name])){
output[defaultOption.name] = output[defaultOption.name].concat(defaultValues);
if (Array.isArray(model[defaultOption.name])){
model[defaultOption.name] = model[defaultOption.name].concat(defaultValues);
} else {
output[defaultOption.name] = defaultValues;
model[defaultOption.name] = defaultValues;
}
} else {
output[defaultOption.name] = defaultValues[0];
model[defaultOption.name] = defaultValues[0];
}
}
}
return output;
}
if (this.groups().length){
var output = {};
this.groups().forEach(function(groupName){
var filter = "return attribute.groups && attribute.groups.indexOf('" + groupName + "') > -1;";
var optionGroup = w.defined(self.where(filter, model));
output[groupName] = optionGroup;
});
return output;
} else {
return w.defined(model);
}
};
CliArgs.prototype.usage = function(options){
return "";
};
function spliceWhile(array, test){

@@ -81,0 +101,0 @@ for (var i = 0; i < array.length; i++){

{
"name": "command-line-args",
"version": "0.1.0",
"version": "0.2.0",
"description": "Parse command line options",

@@ -15,4 +15,5 @@ "repository": "https://github.com/75lb/command-line-args.git",

"dependencies": {
"wodge": "~0.6.8"
"nature": "~0.5",
"wodge": "~0.7"
}
}
var test = require("tap").test;
var parse = require("../lib/command-line-args");
var cliArgs = require("../lib/command-line-args");

@@ -18,8 +18,7 @@ var optionDefinitions = [

function(){
parse(optionDefinitions, argv)
cliArgs(optionDefinitions).parse(argv);
},
new Error("Unexpected option: f"),
"throw test"
new Error("Unexpected option: f")
);
t.end();
});
var test = require("tap").test;
var parse = require("../lib/command-line-args");
var cliArgs = require("../lib/command-line-args");

@@ -16,3 +16,3 @@ var optionDefinitions = [

var argv = [ "--verbose" ];
t.deepEqual(parse(optionDefinitions, argv), {
t.deepEqual(cliArgs(optionDefinitions).parse(argv), {
verbose: true,

@@ -19,0 +19,0 @@ colour: "orange"

var test = require("tap").test;
var parse = require("../lib/command-line-args");
var cliArgs = require("../lib/command-line-args");

@@ -10,3 +10,3 @@

var argv = [ "file1", "file2" ];
t.deepEqual(parse(optionDefinitions, argv), {
t.deepEqual(cliArgs(optionDefinitions).parse(argv), {
files: "file1"

@@ -22,3 +22,3 @@ });

var argv = [ "file1", "file2" ];
t.deepEqual(parse(optionDefinitions, argv), {
t.deepEqual(cliArgs(optionDefinitions).parse(argv), {
files: [ "file1", "file2" ]

@@ -25,0 +25,0 @@ });

var test = require("tap").test;
var parse = require("../lib/command-line-args");
var cliArgs = require("../lib/command-line-args");
var optionDefinitions = [
{ name: "verbose", alias: "v", type: Boolean },
{ name: "dry", alias: "d", type: Boolean },
{ name: "colour", alias: "c" },
{ name: "number", alias: "n", type: Number },
{ name: "files", defaultOption: true },
{ name: "colours", type: Array },
{ name: "tramps", type: Array }
{ name: "tramps", type: Array },
{ name: "dry-run", type: Boolean }
];

@@ -16,5 +15,6 @@

var argv = [ "--verbose" ];
t.deepEqual(parse(optionDefinitions, argv), {
t.deepEqual(cliArgs(optionDefinitions).parse(argv), {
verbose: true
});
t.end();

@@ -25,3 +25,4 @@ });

var argv = [ "--verbose", "--colour", "red" ];
t.deepEqual(parse(optionDefinitions, argv), {
cliArgs(optionDefinitions).parse(argv)
t.deepEqual(cliArgs(optionDefinitions).parse(argv), {
verbose: true,

@@ -35,6 +36,7 @@ colour: "red"

var argv = [ "--verbose", "--colour", "red", "--number", "3" ];
var result = parse(optionDefinitions, argv);
var result = cliArgs(optionDefinitions).parse(argv);
console.dir(result)
t.equal(result.verbose, true);
t.equal(result.colour, "red");
t.equal(result.number, 3);
t.equal(result.number, 3)
t.end();

@@ -45,3 +47,3 @@ });

var argv = [ "--colours", "green", "red", "yellow" ];
var result = parse(optionDefinitions, argv);
var result = cliArgs(optionDefinitions).parse(argv);
t.deepEqual(result, {

@@ -55,3 +57,3 @@ colours: [ "green", "red", "yellow" ]

var argv = [ "--colours", "green", "red", "yellow", "--tramps", "mike", "colin" ];
var result = parse(optionDefinitions, argv);
var result = cliArgs(optionDefinitions).parse(argv);
t.deepEqual(result, {

@@ -63,1 +65,10 @@ colours: [ "green", "red", "yellow" ],

});
test("--this-option", function(t){
var argv = [ "--dry-run" ];
var result = cliArgs(optionDefinitions).parse(argv);
t.deepEqual(result, {
"dry-run": true
});
t.end();
});
var test = require("tap").test;
var parse = require("../lib/command-line-args");
var cliArgs = require("../lib/command-line-args");

@@ -14,3 +14,3 @@ var optionDefinitions = [

var argv = [ "--verbose", "-d", "--colour", "red", "--number", 3 ];
var result = parse(optionDefinitions, argv);
var result = cliArgs(optionDefinitions).parse(argv);
t.equal(result.verbose, true);

@@ -17,0 +17,0 @@ t.equal(result.dry, true);

var test = require("tap").test;
var parse = require("../lib/command-line-args");
var cliArgs = require("../lib/command-line-args");
var optionDefinitions = [
{ name: "verbose", alias: "v", type: Boolean },
{ name: "dry", alias: "d", type: Boolean },
{ name: "colour", alias: "c" },
{ name: "number", alias: "n", type: Number },
{ name: "files", defaultOption: true }
{ name: "files", defaultOption: true },
{ name: "dry-run", alias: "d", type: Boolean }
];

@@ -14,3 +14,3 @@

var argv = [ "-v" ];
t.deepEqual(parse(optionDefinitions, argv), {
t.deepEqual(cliArgs(optionDefinitions).parse(argv), {
verbose: true

@@ -21,5 +21,13 @@ });

test("short: one --this-type boolean", function(t){
var argv = [ "-d" ];
t.deepEqual(cliArgs(optionDefinitions).parse(argv), {
"dry-run": true
});
t.end();
});
test("short: one boolean, one string", function(t){
var argv = [ "-v", "-c", "red" ];
t.deepEqual(parse(optionDefinitions, argv), {
t.deepEqual(cliArgs(optionDefinitions).parse(argv), {
verbose: true,

@@ -26,0 +34,0 @@ colour: "red"

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc