ruby - 使用 Ruby OptionParser 仅打印部分选项的列表

标签 ruby command-line-arguments optparse

我的程序有很多命令行选项。但我不想让用户在输入 --help 时感到不知所措。我不想打印出所有选项,而是只列出最重要的选项,并在键入 --help=full 时打印其余选项。

但是OptionParser似乎只支持打印定义选项的整个列表。我想编写自己的代码,循环定义的选项并以我的方式打印它们,但 OptionParser 似乎没有提供任何方法来访问它包含的选项定义。

有没有办法访问 OptionParser 中我可能错过的选项?或者有什么好的替代选项 OptionParser 吗?或者解决这个问题的其他方法?

最佳答案

您可以根据需要重新定义选项--help

require 'optparse'

#create parsers
opts = OptionParser.new()
opts.banner = "Usage: example.rb [options]"
opts.separator("test optparse with --help[=full]")
opts.on("-v", "--[no-]verbose", "Run verbosely") { |v|
  puts "->Verbose ist #{v.inspect}"
}
opts.on("-r", "--repeat REPEAT", "Repeat REPEAT times") { |v|
  puts "->Repeat ist #{v.inspect}"
}

#Define your own --help
opts.on("-h", "--help [HELP]", "Help") { |v|
  case v
    when 'full' #write original help
      puts opts.help
    when nil, '' #write script specific help
      puts opts.banner 
      opts.summarize([], opts.summary_width ) { |helpline| 
        #make your own decision on each helpline
        #~ puts helpline #puts each line
        puts helpline unless helpline =~ /-v/ #ignore -v
      }
    else
      puts opts.banner 
      puts <<helpmessage
Undefined --help option. Please use 'full' or no option
  #{File.basename(__FILE__)} --help
  #{File.basename(__FILE__)} --help=full
helpmessage
  end
}

opts.parse!

在此版本中,--help 显示所有选项,但不显示-v。您可以做出自己的选择 - 或编写完全不同的帮助。

关于ruby - 使用 Ruby OptionParser 仅打印部分选项的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7463632/

相关文章:

带引号的 Python argparse 参数

ruby - 无法在 Windows 中使用 Cygwin 安装 Mechanize(错误 : Failed to build gem native extension.)

c# - 在C#中发送cmd命令并读取结果

python - optparse 描述中的 ASCII 艺术

mysql - mysqldump 文件去哪里?

Python 参数解析 : Leading dash in argument

python - 初学者 - 在程序中集成 optparse

ruby - 有没有办法让文件夹包含在生产构建中但不让 jekyll 编译它?

ruby - Ruby 中具有负值的整数除法

ruby-on-rails - Ruby/Rails 的编码风格检查器或代码格式化器