如何使用Trollop制作Ruby脚本进行命令行解析?

我最近开始使用Trollop ,这是一个干净而优雅的命令行选项解析器,适用于我所有基于Ruby的小型命令行黑客攻击。 我发现它很容易使用,但是入门很困难:尽管有良好的在线文档,但没有任何东西能够展示如何将Trollop整合到一个完整的脚本中。

问:如何将Trollop整合到我的Ruby命令行程序中?

答:这是一个独立的例子。

if __FILE__ == $0的业务并非特定于Trollop; 这只是意味着“如果此文件作为脚本执行,则运行以下代码”。 此技术允许您将文件用作库模块,将业务逻辑与命令行解析分开。

 #!/usr/bin/env ruby # # This is a near-minimal ruby script to demonstrate trollop, a simple # and elegant command-line parsing package. To run, copy this file to # 'trollop_demo.rb' and make it executable by # $ chmod +x trollop_demo.rb # Then run it via: # $ ./trollop_demo.rb  # For more info on Trollop, see http://trollop.rubyforge.org/ require 'trollop' # A trivial program... def main_method(filename, options) puts("filename = #{filename}, options = #{options}") end # Execute this part when the file is run as a script if __FILE__ == $0 opts = Trollop::options do version "#{$0} Version 3.14159 (C) 2041 Spacely Sprockets, Inc." banner <<-EOS #{$0} is a command-line program to demonstrate trollop Usage: #{$0} [options]  where [options] are zero or more of: EOS opt :verbose, "Print extra information." opt :dry_run, "Don't actually do anything.", :short => "-n" end filename = ARGV.shift if (filename.nil?) || (!File.exist?(filename)) Trollop::die "filename must be given and name an existing file" else main_method(filename, opts) end end 

只需要一点代码,您现在可以尝试所有这些:

 $ ./trollop_demo.rb $ ./trollop_demo.rb a_file_that_doesn't_exist $ ./trollop_demo.rb --version $ ./trollop_demo.rb --help $ ./trollop_demo.rb trollop_demo.rb $ ./trollop_demo.rb --dry-run trollop_demo.rb $ ./trollop_demo.rb --no-dry-run trollop_demo.rb $ ./trollop_demo.rb --verbose trollop_demo.rb $ ./trollop_demo.rb -v trollop_demo.rb 

有关更多信息,请访问http://trollop.rubyforge.org/