tav:Brain-free command-line options parser

tav는 나같은 무뇌아에게 딱 맞는 파서다. 좀더 고급형 cli parser도 많지만 아 뇌가 없어서 힘들다.

tav

다음과 같이 대충 만들고:

#!/usr/bin/env node
var opts = require('tav').set();
console.log(opts, opts.args);

라고 만들고 나서 대충 실행하면:

#!/usr/bin/env bash
$node app.js --host=localhost --port=8080 --debug arg1 arg2
{ host: 'localhost', port: 8080, debug: true } [ 'arg1', 'arg2' ]

된다.

규칙도 정의할 수 있는데 다음과 같이 만들고:

#!/usr/bin/env node
var opts = require('tav').set({
    //value가 없기 때문에 host는 required 옵션이다.
    host: {
        note: 'Hostname'
    },
    //value가 있기 때문에 port는 optional 옵션이다.
    port: {
        note: 'Binding port',
        value: 80
    },
    debug : {
        note : 'Debug this',
        value : false
    }
    //여기에 정의되지 않는 정의하지 않은 옵션은 unexpected이다.
}, "Very cool app");
console.log(opts);

정의한대로 usage를 자동으로 구성해준다. --help 옵션을 주면 전체 볼 수 있다. --help가 없으면 그때그때 필요한 것만 보여준다.

$node app.js --host=localhost --debug arg1 arg2 --help
Very cool app

Hostname
    --host *required
Binding port
    --port
Debug this
    --debug
Help. This message.
    --help

옵션의 속성으로 Required, Unexpected, Optional가 있다.

  • Required: 꼭 입력해야 하는 옵션입니다.
  • Unexpected: 넣으면 안돼는 것입니다.
  • Optional: 생략 가능한 것입니다.

나이스한 컨벤션을 이용해서 정말 간단하게 구현했다. tav는 페니키아어로 mark, sign이라는 뜻이다. 에로틱한 이름이 어울릴 것 같은데 수학적이다.--;