此代码旨在检查用户是否使用以下命令输入选项:
require 'optparse'
ARGV << '-h' if ARGV.empty?
options = {}
OptionParser.new do |parser|
parser.banner = "Usage: myruby.rb [options]"
parser.on("-h", "--help", "Help myruby") do | |
puts parser
exit
end
parser.on("-p", "--people PEOPLE", "PPPPPPPPPP") do |v|
options[:pppp] = v
end
parser.on("-c", "--coordinate COORDINATE", "ccccccccc") do |x|
options[:coordinate] = x
end
end.parse!
# Start my program from this line
unless options[:pppp] && options[:coordinate]
puts "Exit OK because missing both (option and argument) p,c"
exit
end
puts "It work if only run myruby.rb -p argument_P -c argument_c"
我刚发现错误。如果用户只输入一个但不是两个都需要ARGV (-p -c)
。
我可以查看并退出我的应用,但我希望通过退出来分配ARGV
来过滤ARGV << 'h'
。
最好的方法是什么?
更新1:除非在运行我的程序问题之前添加除非:工作为 问,但是当-p或-c缺少参数时出错。例如:红宝石 thiscode.rb -p bababa -c error:rb:17:在`&#39;:缺失 参数(OptionParser :: MissingArgument)
答案 0 :(得分:2)
在解析选项后,只需明确检查两者是否存在:
unless options[:pppp] && options[:coordinate]
puts USAGE # or do whatever else
exit
end