margv
TypeScript icon, indicating that this package has built-in type declarations

1.1.2 • Public • Published

margv

margv is a simple (about 2KB ~ 0.8KB gzip) node.js library for parsing process.argv

Description

Margv helps you build interactive command line tools, by parsing arguments and generating an elegant cli user interface.

Installation

npm i margv

Features

  • Zero Dependencies
  • opt --no-opt -param --param -param=value --param=[1,2] and other formats
  • Supports array, object, Map, Set
  • Very simple small library
  • About 2KB min code
  • Focus on usability and performance
mocha [spec..]
Run tests with Mocha
$ npm run test

Usage

Simple Example

$ touch index.js
// index.js
const margv = require('margv');
console.log(margv());
$ node ./index.js --opt=4 --width=22
{
    '$': [
        '/usr/bin/node',
        '/var/margv/index.js',
        '--opt=4',
        '--width=22'
    ],
    '$0': '/var/margv/index.js',
    _: [],
    opt: '4',
    width: '22'
}

String and Numbers

$ node ./index.js --opt=4 --width=+22 -height +33
{
    '$': [
        '/usr/bin/node',
        '/var/margv/index.js',
        '--opt=4',
        '--width=+22',
        '-height',
        '+33'
    ],
    '$0': '/var/margv/index.js',
    _: [],
    opt: '4',
    width: 22,
    height: 33

}

Array

$ node ./index.js --opt=4 --opt=5 --opt=6 arr=[1,2,3,+4]
{
    '$': [
        '/usr/bin/node',
        '/var/margv/index.js',
        '--opt=4',
        '--opt=5',
        '--opt=6',
        'arr=[1,2,3,+4]'
    ],
    '$0': '/var/margv/index.js',
    _: [],
    opt: [ '4', '5', '6' ],
    arr: [ '1', '2', '3', 4 ]
}

Object

$ node ./index.js --opt.price=4 --opt.name=test --opt.filter=6 --opt.filter=7 --obj={p:1,v:2}
{
    '$': [
        '/usr/bin/node',
        '/var/margv/index.js',
        '--opt.price=4',
        '--opt.name=test',
        '--opt.filter=6',
        '--opt.filter=7',
        '--obj={p:1,v:2}'

    ],
    '$0': '/var/margv/index.js',
    _: [],
    opt: { price: '4', name: 'test', filter: [ '6', '7' ] },
    obj: { p: '1', v: '2' }
}

Types and no parse

$ node ./index.js key --opt=null --value=undefined --test=Infinity --no-param -- no parse
{
    '$': [
        '/usr/bin/node',
        '/var/margv/index.js',
        'key',
        '--opt=null',
        '--value=undefined',
        '--test=Infinity',
        '--no-param',
        '--',
        'no',
        'parse'

    ],
    '$0': '/var/margv/index.js',
    _: [ 'no', 'parse' ],
    key: true,
    opt: null,
    value: undefined,
    test: Infinity,
    param: false

}

Set and Map

$ node ./index.js --set Set([1,2,3,4]) --map Map([[test,1]]) 
{
    '$': [
        '/usr/bin/node',
        '/var/margv/index.js',
        '--set',
        'Set([1,2,3,4])',
        '--map',
        'Map([[test,1]])'
    ],
    '$0': '/var/margv/index.js',
    _: [ 'no', 'parse' ],
    set: Set(4) { '1', '2', '3', '4' },
    map: Map(1) { 'test' => '1' }
}

Package Sidebar

Install

npm i margv

Weekly Downloads

4

Version

1.1.2

License

MIT

Unpacked Size

105 kB

Total Files

15

Last publish

Collaborators

  • webigorkiev