問題タブ [optionparser]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python: OptionParser を呼び出すメソッドを有効に単体テストするにはどうすればよいですか?
私のPython単体テスト(標準のnosetests / unittest.TestCase経由)には、オプションの解析を行うメソッドを作成したクラスがあります。それをうまく実行する素敵な単体テストルーチンを書きたいと思います。
それ以上に、以下の 4 つの質問で、これを行うための最適な方法を探しています。... ?
したがって、ここでの問題は次のとおりです。
どのような有用なことを主張できますか?
OptionParser のスケルトンを再現せずに MockOptionParser を自動生成するにはどうすればよいですか?
MockOptionParser の add_option では、'type' キーワードを処理しないことに注意してください。OptionParser が使用するすべてのメソッドとキーワード引数を予測して、それらを MockOptionParser に実装するわけではありません。 もっと簡単な方法はありますか?
各オプションの自己変数で MockOptionParser を初期化するのは醜いです。これをうまく行う方法はありますか?
すべての add_option() 変数 (たとえば、options.debug) が self.debug のような設定に使用されていることを確認する簡単な方法はありますか?
ruby - Ruby で OptionParse を使用して必須のコマンド ライン引数を強制する
私はこのコードを持っています:
-g
強制的に引数を設定するにはどうすればよいですか? 指定されていない場合は、パラメーターが呼び出された場合に表示される使用方法メッセージをトリガーします。-h
ruby - 引数なしの OptionParse バナーを表示
OptionParser
Rubyで使用しています。
C、Python などの他の言語には、同様のコマンドライン パラメーター パーサーがあり、パラメーターが指定されていない場合やパラメーターが間違っている場合にヘルプ メッセージを表示する方法を提供することがよくあります。
質問:
help
パラメータが渡されなかった場合にデフォルトでメッセージを表示するように設定する方法はありますか (ruby calc.rb
)?- 必要なパラメーターが指定されていないか無効な場合はどうなりますか? がREQUIRED
length
パラメータであり、ユーザーがそれを渡さないか、次のような間違ったものを渡したとし-l FOO
ます。
ruby - RubyのOptionParserで長いオプションのみを機能させるにはどうすればよいですか?
私はRuby(test.rb)でこのような単純なコードを持っています:
それから私はそれを実行します:./test.rb -s
そして得ました:
私は何かを逃しましたか?
短いオプションではなく、唯一の--sort
(長い)オプションが機能することを望みます。
どうすれば入手できますか?
ruby - 例外処理での Ruby optparse の奇妙な動作
私は、ツールの CLI コンポーネントのエラー処理を使用して、CLI Ruby ツールをもう少し堅牢にすることに取り組んでいました。私は optparse を使用しています。ドキュメントには、フラグに必須およびオプションの引数を指定できることが示されています。奇妙な/迷惑な動作が見られるだけです。
フラグの引数が (等号を使用して) 必須である 1 つのケースでは、失敗させようとしましたが、それでも機能し、代わりにそのフラグの引数として次のフラグ ('-u') を取得しました。残りの解析が理想的とは言えない方法で barf されます。「-....」が有効な場合があるため、これで問題ないと思いますが、スイッチの値を設定するために等号を使用しているため、「スペース」スタイルの割り当ては機能しないと思います.
次の CLI 入力を渡すと:
次に、解析中に options[:user] を -d に設定し、options[:db] は検出されず、1 ではなく 2 つの位置引数があるため nil です。明らかにこれはユーザー エラーですが、キャッチしたい実際のエラーを表示し、次のリストから位置引数を 1 つだけ渡す必要があるというエラー (ツールの場合) を返すだけではありません: ... 本当の問題は、必要な引数である -u フラグがないことです。したがって、optparse に ArgumentMissing 例外があることを考えると、それが .parse! だと思います。投げます。
ただし、オプションの引数 (等号を使用) を持つフラグを使用すると、-a -b=something を実行すると実際にはオプションになりますが、これは機能しません: -a something -b=somethingelse. 値を強制する唯一の方法は、等号 (-a=something -b=somethingelse) を使用することです。等号付きの必須の引数を使用した以前の動作を考えると、そうではないと思います。例:
したがって、解析すると:
次に、options[:user] は nil (ok) で、options[:db] は mydb で、1 つの位置引数が残っています。
この解析では:
次に、options[:user] は nil (OK ではありません) で、options[:db] は mydb で、2 つの位置引数が残っています: myuser と positionalarg (OK ではありません)。私のエラーチェックは、再び、位置引数カウントで barfs します。必須のフラグ引数の場合、スペースと = の両方が機能する場合、オプションのフラグ引数の場合は同じであるはずですが、そうではありません。
もう 1 つの問題は、オプションの引数 (スペースを使用) を持つフラグは、それらがコマンドの最後にあり、位置引数をフラグ引数として受け取る場合を除いて問題ないということです。
例:
したがって、解析すると:
次に、options[:db] は mydb (ok) で、options[:user] は positionalarg であり、位置引数は残っていません。-d mydb は、等号で指定したスペースでも機能することに注意してください。
多くの人が optparse .parse を実行して ruby CLI を実行しているようです! ARGV の残りのエントリを位置引数として取得しますが、ARGV を optparse に渡す前に、最初に遠端から位置引数を取り除く方がよいと考えています (可変数の位置引数の場合にこれが失敗する場合を除きます)。
私はこれらすべてをプログラミングできると確信していますが、私が知らない optparse でそれを行う方法がある場合は、そうしないことを好みます。
オプションの引数を持つフラグを避けるのが最善かもしれません:)が、アドバイスをいただければ幸いです。