get-arguments

1.0.2 • Public • Published

Description

get-arguments package gets the process.argv and returns object with command and arguments passed by the user in the command line.

Quick start

npm install get-arguments

Considering that there is "bin" : { "myapp" : "./cli.js" } in your package.json file:

If there is a limited number of valid commands, use:
//cli.js
const args = require('get-arguments');
 
const commandName = "myapp"; //your CLI command name
const validCommands = ['init','config','update','list','build']; //your allowed commands
 
args(commandName,validCommands,function(argsObject){
  if(argsObject===null) return;
  //argsObject returns null if:
    //the incorrect command was typed by the user 
    //the arguments syntax typed by the user was incorrect
  //do your magic here
  //use argsObject.command
  //use argsObject.args
});

If the user types incorrect command, the following message in the command line is printed:

Usage: myapp <command>
where <command> is one of:
   init,
   config,
   update,
   list,
   build
If the user is allowed to type any command, use:
//cli.js
const args = require('get-arguments');
 
args(function(argsObject){
  if(argsObject===null) return;
  //argsObject returns null if:
    //the arguments syntax typed by the user was incorrect
  //do your magic here
  //use argsObject.command
  //use argsObject.args
});

CLI arguments syntax:

Acceptable:

The user can pass a command with:

  • no arguments
  • only argument value(s)
  • argument pair(s) of name and value(s)
> myapp command
> myapp command valA valB valC
> myapp command -p val
> myapp command --param val
> myapp command -p valueA valueB valueC --force
> myapp command --name John --age 25 --title "New Project"

Unacceptable:

> myapp command valA valB --param
> myapp command valA valB -p

If the user types incorrect arguments syntax, the following message in the command line is printed:

Invalid arguments.

Behaviour

> myapp init

{
  command:'init',
  args:[]
}

> myapp build a b c

{
  command:'build',
  args:['a','b','c']
}

> myapp config --get name title age

{
  command:'config',
  args:{
    '--get':['name','title','age']
  }
}

> myapp config --get name title age --set title "New Title"

{
  command:'config',
  args:{
    '--get':['name','title','age'],
    '--set':['title','New Title']
  }
}

> myapp init --path ./project --async -f

{
  command:'init',
  args:{
    '--path':['./project'],
    '--async':[],
    '-f':[]
  }
}

Package Sidebar

Install

npm i get-arguments

Weekly Downloads

2

Version

1.0.2

License

MIT

Last publish

Collaborators

  • devrafalko