fish_opt - argparse コマンド用のオプション仕様を作成する

概要

fish_opt [-s ALPHANUM] [-l LONG-NAME] [-ormd] [--long-only] [-v COMMAND OPTIONS ... ]
fish_opt --help

説明

このコマンドは、 argparse コマンドでの使用に適したオプション仕様を生成する方法を提供します。もちろん、このコマンドを使わずに手動でオプション仕様を記述することも可能ですが、このコマンドが提供する明快さを好むかもしれません。

以下の argparse オプションが利用可能です。

-s--short ALPHANUM

定義するオプションの短縮フラグ(ショートフラグ)として使用される、1文字の英数字を受け取ります。このオプションか --long オプションのいずれか一方は必ず指定する必要があります。

-l--long LONG-NAME

定義するオプションのロングフラグ(ロングフラグ)として使用される文字列を受け取ります。このオプションは任意であり、デフォルト値はありません。ロングフラグが定義されていない場合、そのオプション仕様を使用した引数解析では、短縮フラグのみが許可されます。

--long-only

非推奨。定義されたオプションにおいて、たとえ短縮フラグが定義( --short が指定)されていても、ロングフラグ名のみの使用を許可します。

-o--optional-val

定義されるオプションは値を取ることができますが、その値は必須ではなく任意(オプション)です。引数の解析中にこのオプションが複数回現れた場合、最後に現れた値のみが保存されます。これは、 argparse によって作成されるフラグ変数の要素数が、値が与えられなかった場合は0になり、値が与えられた場合は正確に1つになることを意味します。

-r--required-val

定義されるオプションは値を必須とします。引数の解析中にこのオプションが複数回現れた場合、最後に現れた値のみが保存されます。これは、 argparse によって作成されるフラグ変数が正確に1つの要素を持つことを意味します。

-m--multiple-vals

各オプションの指定値が蓄積されます。 --optional-val が指定されている場合、値は任意であり、値が指定されない場合は空の文字列が格納されます。そうでない場合は、 --required-val オプションが暗黙的に適用され、オプションの指定ごとに値が必要になります。これは、 argparse によって作成されるフラグ変数が、引数内のこのオプションの出現回数と同じ数の要素(値が提供されなかった回分も含む)を持つことを意味します。

-d--delete

このオプションとその値は、 argparse によって設定される $argv_opts 変数から削除されます(他のオプションと同様に、 $argv からも削除されます)。

-v--validate COMMAND OPTION...

このオプションは最後に指定する必要があり、 -o-r-m のいずれかを必要とします。残りの引数はすべて、引数の値を検証(バリデート)するために実行される fish スクリプトとして解釈されます。詳細は argparse のドキュメントを参照してください。 COMMAND OPTION... の解釈は eval に似ているため、検証スクリプトの実行時に特殊文字を文字通りに解釈させたい場合は、引用符で囲むかエスケープを*2回*行う必要がある場合があることに注意してください。

-h--help

このコマンドの使用に関するヘルプを表示します。

使用例

真偽値をとるヘルプフラグ用の単一のオプション仕様を定義する:

set -l options (fish_opt -s h -l help)
argparse $options -- $argv

上記と同じですが、値を必要とする2つ目のフラグを追加する場合:

set -l options (fish_opt -s h -l help)
set options $options (fish_opt -s m -l max -r)
argparse $options -- $argv

上記と同じですが、2つ目のフラグの値が空文字列であってはならない場合:

set -l options (fish_opt -s h -l help)
set options $options (fish_opt -s m -l max -rv test \$_flag_value != "''")
argparse $options -- $argv

上記と同じですが、複数回の指定が可能で各指定値を保存する3つ目のフラグを追加し、かつロングフラグ名( --token )のみを定義する場合:

set -l options (fish_opt --short=h --long=help)
set options $options (fish_opt --short=m --long=max --required-val --validate test \$_flag_value != "''")
set options $options (fish_opt --long=token --multiple-vals)
argparse $options -- $argv