正しく機能するには、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アプリケーションではこの情報を提供するさまざまな方法が許可されており、特定の方法よりも「具体的な」方法が優先されます。
だからあなたは:
グラフィックアプリケーションの場合、使用されるツールキットはほぼ常にリソースを取得する方法(純粋な
xrdb
Xのスタイルなど)を提供します。構成ファイル(ツールキットでまだ提供されていない場合)
短くて長いコマンドラインオプション(
getopt
Cで使いやすい)情報が提供されない場合は、パスの現在のディレクトリなどの合理的なデフォルト値
場所パラメータは、ファイルリストが続く可能性があるいくつかの必須パラメータにのみ意味があります(ワイルドカードの仕様が複数のパラメータに拡張されるため)。 6つの個々の部分が多すぎると、順序を覚えにくくなる可能性があるため、このオプションを使用してください。
--password -
パスワードの場合は、特別な値(または)を使用して、アプリケーションがstdinからパスワードを読み取る方法を提供するのが役立ちます-p -
。
アプリケーションを使用する人は誰でも、ハードコードされたパスワード、設定ファイルのパスワード、またはユーザーにパスワードを入力させることが特定のユースケースに最適なオプションであるかどうかを選択できます。
答え2
通常、次のことを行うのが最善です。
- 依存関係パラメーターを計算しますが、それをオーバーライドできるようにします。たとえば、例ではと
filename
同じパラメータがあるため、リポジトリのみが必要になる$(basename repository)
場合がありますが、オプションで--filename
代替ファイル名を指定できます。 - コマンドラインと出力
ps
から認証を非表示にします。ファイルに入れてください。おそらく、ファイルから読み取るよう$HOME/.fm-git.conf
に、ファイルにさらに制約を加えることができます。chmod 600 $HOME/.fm-git.conf
場合によっては、環境変数からユーザー名とパスワードを取得することがあります(たとえば、デフォルトのユーザー名はシステムユーザー名またはですSUDO_USER
)、あなたの場合はそうではないかもしれません。
したがって、2つの最適化の後には3つのcliパラメータしか残りませんが、これは許容可能であると思います。位置引数として自由に使用するか、いくつかのフラグを指定してください。例--comment
: スクリプトでプログラムをさらに使用する場合、長いフラグを指定すると読みやすくなりますが、主に cli でプログラムを手動で実行する場合は、さらに入力する必要があります。 。
とにかく、Pythonでプログラムを書くときは、次のことをお勧めします。引数モジュール- パラメータを解析し、必要に応じて後で変更するのに役立ちます。