多くのパラメータを必要とするユーティリティに推奨されるインターフェイスは何ですか? [閉鎖]

多くのパラメータを必要とするユーティリティに推奨されるインターフェイスは何ですか? [閉鎖]

正しく機能するには、6つの情報が必要なコマンドラインユーティリティを作成しています。次のようになります。

fm-git filename repository path comment username password

ただし、すべての個々のシステムでは一定usernameですpassword

ユーティリティを実行するとビルドが難しいことがわかりました。たとえば、以下はこのユーティリティのテスト呼び出しです(読みやすくするために複数行に分けられます)。

/Users/chuck/Projects/fm-git/fm-git.py chiv-lib
/Users/chuck/Projects/chiv-lib/ Chivalry/ "continued testing"
Administrator abc1234

私はこれらの主張を伝えるさまざまな方法を考えています。たとえば、fm-git -f filename -r repository ...またはfm-git --filename filename --repository repository...。また、構成設定は通常変更されずにユーティリティ呼び出しから削除される可能性があるため、構成設定を作成してパラメータ化することも検討usernameしています。password

ユーティリティパラメータが多いが必須の場合、ユーティリティコールの読みやすさを維持するために許可される方法は何ですか?

答え1

一般に、Unixアプリケーションではこの情報を提供するさまざまな方法が許可されており、特定の方法よりも「具体的な」方法が優先されます。

だからあなたは:

  • グラフィックアプリケーションの場合、使用されるツールキットはほぼ常にリソースを取得する方法(純粋なxrdbXのスタイルなど)を提供します。

  • 構成ファイル(ツールキットでまだ提供されていない場合)

  • 短くて長いコマンドラインオプション(getoptCで使いやすい)

  • 情報が提供されない場合は、パスの現在のディレクトリなどの合理的なデフォルト値

場所パラメータは、ファイルリストが続く可能性があるいくつかの必須パラメータにのみ意味があります(ワイルドカードの仕様が複数のパラメータに拡張されるため)。 6つの個々の部分が多すぎると、順序を覚えにくくなる可能性があるため、このオプションを使用してください。

--password -パスワードの場合は、特別な値(または)を使用して、アプリケーションがstdinからパスワードを読み取る方法を提供するのが役立ちます-p -

アプリケーションを使用する人は誰でも、ハードコードされたパスワード、設定ファイルのパスワード、またはユーザーにパスワードを入力させることが特定のユースケースに最適なオプションであるかどうかを選択できます。

答え2

通常、次のことを行うのが最善です。

  1. 依存関係パラメーターを計算しますが、それをオーバーライドできるようにします。たとえば、例ではとfilename同じパラメータがあるため、リポジトリのみが必要になる$(basename repository)場合がありますが、オプションで--filename代替ファイル名を指定できます。
  2. コマンドラインと出力psから認証を非表示にします。ファイルに入れてください。おそらく、ファイルから読み取るよう$HOME/.fm-git.confに、ファイルにさらに制約を加えることができます。chmod 600 $HOME/.fm-git.conf場合によっては、環境変数からユーザー名とパスワードを取得することがあります(たとえば、デフォルトのユーザー名はシステムユーザー名またはですSUDO_USER)、あなたの場合はそうではないかもしれません。

したがって、2つの最適化の後には3つのcliパラメータしか残りませんが、これは許容可能であると思います。位置引数として自由に使用するか、いくつかのフラグを指定してください。例--comment: スクリプトでプログラムをさらに使用する場合、長いフラグを指定すると読みやすくなりますが、主に cli でプログラムを手動で実行する場合は、さらに入力する必要があります。 。

とにかく、Pythonでプログラムを書くときは、次のことをお勧めします。引数モジュール- パラメータを解析し、必要に応じて後で変更するのに役立ちます。

関連情報