argobj

1.0.3 • Public • Published

argobj

This is a thin wrapper for the argparse module, adding a few new features. Since argparse is a direct port of the Python equivalent, new features normally don't get added to it.

Usage

First, run argObj() to create the parser object.

const argObj = require('argobj')
const parser = argObj({
  addHelp: true,
  description: `Suspendisse at sodales leo, in bibendum ex.`,
  longDescription: `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas ac lectus lacinia, laoreet sem sit amet, imperdiet tellus. Etiam augue erat, elementum vel malesuada non, varius quis lectus. Phasellus quis sollicitudin dui, nec tristique ex.`,
  noWrapping: false,
  ensurePeriod: false,
  noDoubleMetavars: true,
  epilog: `For more information, see <https://michielsikma.com/>.`,
  version: '1.0.0'
})

The constructor argument takes several new attributes:

  • longDescription - An optional extra block of text that gets added below the description
  • noWrapping - Turns off the text wrapping that normally gets done to description text
  • ensurePeriod - Ensures that description ends with a period - I use this when directly passing my package.json's description field
  • noDoubleMetavars - Reduces multiple instances of an action's metavar to one to save space (changing e.g. -a NAME, --author NAME into -a, --author NAME)

After the argparser object is instantiated, add any number of arguments.

parser.addArgument(['--action'], { help: 'Which action to take.', choices: ['search', 'detail'], metavar: 'ACTION', choicesHelp: ['Runs a search query and returns results.', 'Returns information about a specific item by ID.'] })
parser.addArgument(['--output'], { help: 'Result output format.', choices: ['json', 'xml', 'terminal'], choicesHelp: ['JSON string (default).', 'XML string.', 'Plain text readable in terminal.'], defaultValue: 'json', metavar: 'TYPE' })
parser.addArgument(['--site'], { help: 'Site to run the query on.', choices: ['asdf'], defaultValue: 'asdf' })

New here is the choicesHelp attribute. When choices adds multiple values for an argument, choicesHelp will make them be listed explicitly with their own help string. The two choices and choicesHelp arrays must be of the same length.

You can make sections of arguments with the addSection() method. Note that there is still the limitation of every argument having to be unique, even if they appear in different sections.

parser.addSection('Search options:')
parser.addArgument(['--query'], { help: 'Query string to search for.' })
parser.addArgument(['--category'], { help: 'Specific category ID.' })
 
const parsed = parser.parseArgs()

To see the above example, try running ./example.js --help in this package.

Copyright

© MIT license

Readme

Keywords

none

Package Sidebar

Install

npm i argobj

Weekly Downloads

0

Version

1.0.3

License

ISC

Unpacked Size

14.6 kB

Total Files

6

Last publish

Collaborators

  • msikma