CLIツールのベターパターン/アンチパターンを教えてください
背景
PythonでCLIツールを作成しています。
aws-cliのような、外部サービスにアクセスするCLIツールです。以下のようにコマンドを実行します。
# ユーザusr1を登録
$ mycli register_user --user_id usr1 --user_info "{'name': 'alice`}"
# usr1,usr2,usr3に関する詳細情報を出力する
$ mycli print_users --user_id usr1 usr2 usr3
コマンドライン引数のパースには、argparserモジュールを利用しています。
悩んでいること
CLIツールのサブコマンドやオプションの設計に悩んでいます。
例えば、以下のような内容です。
サブコマンド名やオプション名の命名規則
- アンダースコア区切り?ハイフン区切り?
- 複数の値を受け取ることができる(1個でもOK)オプション名は単数形?複数形?
--user alice bob
or--users alice bob
オプション
- 使わない方が良い(競合しやすい)オプション名(
-h
?)
その他
- 標準入力の使いどころ。ファイルで渡すか標準入力で渡すか
- 引数の順番(例:コピー元、コピー先の順)
質問
CLIツールに関して、ベターパターンやアンチパターン、標準や慣習が記載されているサイトがありましたら、教えていただきたいです。
「command line interface design pattern」で検索してみましが、私が期待するサイトが見つかりませんでした。