2009-04-06 14 views
2

optparseを使用してコマンドライン引数を解析しようとしています。私はそのような引数を受け入れるように私のプログラムをしたいと思います:Rubyでコマンドライン引数からファイル名を抽出する

$ ./myscript.rb [options] filename 

私は簡単に[options]一部を管理することができます。

require 'optparse' 

options = { :verbose => false, :type => :html } 

opts = OptionParser.new do |opts| 
    opts.on('-v', '--verbose') do 
    options[:verbose] = true 
    end 
    opts.on('-t', '--type', [:html, :css]) do |type| 
    options[:type] = type 
    end 
end 
opts.parse!(ARGV) 

しかし、どのように私はfilenameを得るのですか?

私はARGVから手動で抽出し、より良い解決策が存在しなければならない、私ははOptionParserに送信する前に、それを抽出することは悪いとは思いませんか

答えて

4

"parse"メソッドは、未処理のARGVを返します。したがって、あなたの例では、ファイル名を含む1つの要素の配列が返されます。

+0

偉大な、そのトリックを行うようです。ありがとう。 –

-1

把握することはできませんでした、私はそれを考えます理にかなっている。私はおそらくこれまでにOptionParserを使ったことがないので、これを言うだろうが、ああ。

require 'optparse' 

file = ARGV.pop 
opts = OptionParser.new do |opts| 
    # ... 
end 
+0

私はちょうどARGV.popを使用することはできませんせずに続行。たとえば、最後の引数が "css"の場合、ファイルか--typeスイッチに属します。 –

+0

これを行わないでください。 OptionParserはすでに簡単な解決策を提供しているので、最初の答えを見てください。 – JESii

1

私は単にARGV.popを使用することはできません。たとえば、 最後の引数が "css"の場合、 はファイルか、 --typeスイッチに属しています。

最終的な引数にはファイル名(使用量が問い合わせるもの)を指定する必要があります。この場合、スクリプトはゼロ以外で終了する必要があります。ユーザーは使用レポートを取得する必要があります。エラー。あなたはデフォルトのファイル名を作成するか、最後の引数としてファイル名を必要としますが、オプションのままにしないようにしたい場合は

さて、あなただけの最後の引数が有効なファイルであるかどうかを確認するためにテストすることができます。予想されるように、それを使用している場合はそうでない場合など

関連する問題