Closed yamamoto-febc closed 4 years ago
from #486
v1で利用するcliライブラリを選定する
現在はgithub.com/urfave/cli v2を利用している。
現在までの実装を通じた課題は以下のようなものがある。
以下のように、引数の後にフラグの指定ができない。
usacloud server read <ID or Name> -o json
v0実装当時、flagのauto completionのサポートが限定的であったためある程度(bashなどで)独自実装している。 この独自実装に起因して補完時にエラーが出る問題がある。 出来るだけ独自実装を排したい。
現在は対象リソースを指定するのにIDまたは名称を指定可能。 これはcommand/cliパッケージにて各コマンド(command/funcパッケージ)へ値を渡す前に名称->IDへの変換処理を行うことで実現している。 この辺りはコードジェネレータで生成しているが、生成されたcliパッケージのコードの可読性が低いためcliパッケージの機能を分割したい。 そのためにcobraのPreCommandの様な機能が組み込みで欲しい。
github.com/urfave/cli/v2ではcommand arg1 --flag1=foo arg2のような引数とフラグが混ざった場合に非対応。
command arg1 --flag1=foo arg2
このためv1ではgithub.com/spf13/cobraに置き換える。
from #486
v1で利用するcliライブラリを選定する
背景
現在はgithub.com/urfave/cli v2を利用している。
現在までの実装を通じた課題は以下のようなものがある。
args/flagsの位置の自由度が低い
以下のように、引数の後にフラグの指定ができない。
auto completionのビルトインサポートが限定的
v0実装当時、flagのauto completionのサポートが限定的であったためある程度(bashなどで)独自実装している。 この独自実装に起因して補完時にエラーが出る問題がある。 出来るだけ独自実装を排したい。
PreCommandの利用
現在は対象リソースを指定するのにIDまたは名称を指定可能。 これはcommand/cliパッケージにて各コマンド(command/funcパッケージ)へ値を渡す前に名称->IDへの変換処理を行うことで実現している。 この辺りはコードジェネレータで生成しているが、生成されたcliパッケージのコードの可読性が低いためcliパッケージの機能を分割したい。 そのためにcobraのPreCommandの様な機能が組み込みで欲しい。
検討対象