argp - Go向け GNU スタイルのコマンドライン引数パーサー
(github.com/tdewolff)./test -vo out.png --size 256 input.txtのような GNU 標準に従うコマンドライン引数パーサー-hおよび--helpで組み込みのヘルプメッセージを提供- タグ設定で構造体フィールドに引数をマッピング
- 配列、スライス、構造体のような複合型フィールドをサポート
- ネストされたサブコマンドをサポート
GNU コマンドライン引数の規則
- ハイフン(
-)で始まる項目はオプション - 複数のオプションは結合可能(
-abcは-a -b -cと同じ) - 長いオプションは 2 つのハイフン(
--)で始まる(--abc) - オプション名は英数字のみ使用可能
- オプション値は空白、等号(
=)、または連続した値で設定可能(-a1、-a=1、-a 1はすべて同じ) - オプションと非オプションの値が混在していても問題なし
- オプションはどの順序でも指定可能
--はオプション終了を意味し、それ以降の引数はすべて非オプションとして扱われる- 単独の
-は通常、標準入力または標準出力を意味する - 同じオプションが複数回指定された場合は最後の値が適用される
- オプションは複数の値を持てる(
-a 1 2 3は[1,2,3]として処理される)
追加機能
- オプションカウント:
-vvvはv = 3に設定される - オプション追加:
-v 1 -v 2はv = []int{1, 2}に設定される - ブールオプション:
--varは有効化し、--no-varは無効化する - オプションは構造体、スライス、マップのような複合型にできる
- オプションはソース(例: SQL)からリスト/辞書の値を取得できる
1件のコメント
cobraを使っていましたが、それに比べてargpはフラグに対していろいろなオプションを指定できますね(笑)