cmd-ts
A type-driven command line argument parser
code:index.ts
import { command, run, string, number, positional, option } from 'cmd-ts';
const cmd = command({
name: 'my-command',
description: 'print something to the screen',
version: '1.0.0',
args: {
number: positional({ type: number, displayName: 'num' }),
message: option({ long: 'greeting', type: string }),
},
handler: args => {
console.log(args);
},
});
run(cmd, process.argv.slice(2));
code:result
λ bun run index.ts 2 --greeting="hoge"
{
number: 2,
message: "hoge",
}
parser combinatorになる関数が提供されている
command
メインのやつ
positional, restPositionals
optionで指定するのではなく、位置によってどの引数なのか決まる
positional
1個だけ位置引数を取るparser
restPositionals
残り全部まとめて位置引数を取るparser
e.g.
$ my-app file1.txt file2.txt file3.txt
option, multioption
以下どれでも良い
--key value
--key=value
-k value
-k=value
flag, multiflag
booleanになる
こういうやつ
$ my-app --verbose
$ my-app --force=true
$ my-app -v
subcommands
こういうやつ
$ mycli user add
$ mycli user delete
$ mycli project create
binary
code:ts
import { binary, command, run } from 'cmd-ts';
const myCommand = command({
/* ... */
});
const binaryCommand = binary(myCommand);
run(binaryCommand, process.argv);