commanderだと、GitのCLIツールのような子コマンドを実装することができます。
実際のところ
まず、ベースとなるファイルを用意します。
前回からの差異は"command"部分で、ここに子コマンドを記述します。
#!/usr/bin/env node // ./sample var args = require('commander'); args .option('-y --year [val]', 'broadcasted year.', (new Date()).getFullYear()) .option('-n --noTitle','if true, output without title.') .option('-s --server','if true, open preview webpage.') .command('search [query]', 'search with optional query') .parse(process.argv); var YEAR = args.year ,NOTITLE = args.noTitle ,SERVER = args.server; console.log(args.year);
子コマンド自体は別ファイルに記載します。
親コマンド名が"sample"、子コマンド名が"search"なら"sample-search"といった名前にします
#!/usr/bin/env node // ./sample-search.js var program = require('commander') program .version("0.01") .parse(process.argv); var data = program.args; console.log(data);
以上を実行権限つきでやると……
$ chmod 701 sample $ ls sample sample-search.js
以下のように、子コマンドの値は配列に格納されます。
$ ./sample search hoge fuga 2016 [ 'hoge', 'fuga' ]
親コマンドの引数は有効みたいですね。
$ ./sample search -y 2014 hoge fuga 2014 [ 'hoge', 'fuga' ]