Skip to content

Latest commit

 

History

History
153 lines (115 loc) · 5.54 KB

README.md

File metadata and controls

153 lines (115 loc) · 5.54 KB

🚩 funwithflags

funwithflags

Build Status NPM version MIT License fliphub fluents

parse argument options

This module is minimist refactored as a fluent class ~125% faster.

browser support

var argv = require('funwithflags')(process.argv.slice(2));
console.log(argv);
yarn add funwithflags --dev
npm install funwithflags --save-dev

⚙ options

Name Type Description ?Default Example
string string | Array<string> names to always treat as strings null
boolean boolean | string | Array<string> always treat as booleans. if true will treat all double hyphenated arguments without equal signs. (e.g. affects --foo, not -f or --foo=bar) null
alias Object an object mapping string names to strings or arrays of string names to use as aliases {}
default Object an object mapping string argument names to default values {}
['--'] boolean populate argv._ with everything before the -- and argv['--'] with everything after the -- null
stopEarly boolean when true, populate argv._ with everything after the first non-option null
unknown Function a function which is invoked with a command line parameter not defined in the opts configuration object. If the function returns false, the unknown option is not added to argv null
obj boolean when true, returns the object instance of FunWithFlags null
vars boolean when true, allows args without dashes to be used as flags null
camel boolean when true, camelCases object keys on argv null
underscore boolean when false, object is returned with no _ (for looping over object keys or values or the like) null
  • tests use ava
var unknown = []

// captures the unknown args, similar to how `vars` does
function unknownFn(arg) {
  unknown.push(arg)
  return true
}

var opts = {
  'default': {
    'moose.box': 11,
    'eh': true,
    'igloo': false,
  },
  'alias': {
    'moose.box': 'mooses.boxes',
    'rain': 'british-columbia',
  },
  'boolean': ['eh', 'igloo'],
  'string': ['country', 'nan', 'noflag'],
  'vars': true,
  '--': true,
  'obj': true, // will return the instance
  'unknown': unknownFn,
}

var args = [
  '--country=canada',

  // aliased to `rain` so it will have `rain: true, 'british-columbia': true`
  '--british-columbia',

  // no value is default a true boolean
  '--igloo',

  // dot notation
  '--a.b=100',

  // using `string: 'nan'` we ensure this stays as a string
  '--nan',
  '99',

  // first flag is boolean (t: true)
  // second flag assigned to following value (f: 555)
  '-tf',
  '555',

  // mooses and globbing are parsed only because `vars: true``
  'mooses.boxes=moozes',
  'globbing',
  `"**/*"`,

  // after double dash
  '--',
  'dis-little-piggy',
  'went-to-market',
]

var obj = require('../')(args, opts)
const argv = obj.argv