sacloud / usacloud

usacloud:rabbit: : CLI client for the Sakura Cloud:cherry_blossom::cloud:
Apache License 2.0
54 stars 13 forks source link

v1 cliライブラリの選定 #491

Closed yamamoto-febc closed 4 years ago

yamamoto-febc commented 4 years ago

from #486

v1で利用するcliライブラリを選定する

背景

現在はgithub.com/urfave/cli v2を利用している。

現在までの実装を通じた課題は以下のようなものがある。

args/flagsの位置の自由度が低い

以下のように、引数の後にフラグの指定ができない。

usacloud server read <ID or Name> -o json

auto completionのビルトインサポートが限定的

v0実装当時、flagのauto completionのサポートが限定的であったためある程度(bashなどで)独自実装している。 この独自実装に起因して補完時にエラーが出る問題がある。 出来るだけ独自実装を排したい。

PreCommandの利用

現在は対象リソースを指定するのにIDまたは名称を指定可能。 これはcommand/cliパッケージにて各コマンド(command/funcパッケージ)へ値を渡す前に名称->IDへの変換処理を行うことで実現している。 この辺りはコードジェネレータで生成しているが、生成されたcliパッケージのコードの可読性が低いためcliパッケージの機能を分割したい。 そのためにcobraのPreCommandの様な機能が組み込みで欲しい。

検討対象

yamamoto-febc commented 4 years ago

github.com/urfave/cli/v2ではcommand arg1 --flag1=foo arg2のような引数とフラグが混ざった場合に非対応。

このためv1ではgithub.com/spf13/cobraに置き換える。