3

一般的な git のようなインターフェイスを持つ小さなコマンド ライン todo アプリを作成しています。

実行できるいくつかのタスクaddlistありcompleteますtodo <task>。例todo list

git と同様に、これらのタスクの一部は変数またはオプションを取り、todoアプリもオプションを取ることができます (構成ファイルの場所など、あらゆる種類のタスクに適用可能です)。

最終的には次のように書けるはずです:

todo -c ~/.config/todorc add --desc "walk the dog"

ここでの順序に注意してください。グローバル オプションは、実際のタスクの前に指定されます (指定することしかできません)。典型的な呼び出しのスケルトンは次のとおりです。

todo [global options] <task> [task options/arguments]

このプロジェクトは C++ で作成しており、基本的なバックエンド ライブラリは完成しています。私は今、ユーザーインターフェイスを書く方法を理解しようとしています。

すべてのタスクを個別に処理する1つの大きなmainものを使用する必要がありますか、それともプログラムをいくつかのサブプログラムに分割し、それらを単純なシェルスクリプトから呼び出す必要があります(私が正しければgitが行うことです)。後者は保守が容易に思えますが、グローバル オプションをタスク実行可能ファイルに渡すのが難しくなります。

この件に関する文献はありますか?

4

1 に答える 1

2

あなたはそれを小さな コマンドラインアプリケーション用に書いた。それから私は1つの単一のバイナリに行きます。最も簡単な方法は、おそらくBoost.Program_optionsを使用することです。

私の観点からは、いくつかのオプションの位置を制限することは非常に悪い考えです。それはほとんどのユーザーを混乱させるでしょう。最悪のケースは、位置がオプションのセマンティクスを変更する場合です。gccオプションを使用してそれを行いましたが-l、プログラムが正しくリンクされていないことについて新しいユーザーが不満を言っているのをまだ見つけてから10年後です。

于 2012-09-15T21:57:57.163 に答える