Advertisement
Guest User

Untitled

a guest
Sep 26th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. #!/usr/bin/env ruby -w
  2. ## Using ruby's standard OptionParser to get subcommand's in command line arguments
  3. ## Note you cannot do: opt.rb help command
  4. ## other options are commander, main, GLI, trollop...
  5.  
  6. # run it as
  7. # ruby opt.rb --help
  8. # ruby opt.rb foo --help
  9. # ruby opt.rb foo -q
  10. # etc
  11.  
  12. require 'optparse'
  13.  
  14. options = {}
  15.  
  16. subtext = <<HELP
  17. Commonly used command are:
  18. foo : does something awesome
  19. baz : does something fantastic
  20.  
  21. See 'opt.rb COMMAND --help' for more information on a specific command.
  22. HELP
  23.  
  24. global = OptionParser.new do |opts|
  25. opts.banner = "Usage: opt.rb [options] [subcommand [options]]"
  26. opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
  27. options[:verbose] = v
  28. end
  29. opts.separator ""
  30. opts.separator subtext
  31. end
  32. #end.parse!
  33.  
  34. subcommands = {
  35. 'foo' => OptionParser.new do |opts|
  36. opts.banner = "Usage: foo [options]"
  37. opts.on("-f", "--[no-]force", "force verbosely") do |v|
  38. options[:force] = v
  39. end
  40. end,
  41. 'baz' => OptionParser.new do |opts|
  42. opts.banner = "Usage: baz [options]"
  43. opts.on("-q", "--[no-]quiet", "quietly run ") do |v|
  44. options[:quiet] = v
  45. end
  46. end
  47. }
  48.  
  49.  
  50. global.order!
  51. command = ARGV.shift
  52. unless command
  53. STDERR.puts "ERROR: no subcommand"
  54. STDERR.puts global # prints usage
  55. exit(-1)
  56. end
  57. subcommands[command].order!
  58.  
  59. puts "Command: #{command} "
  60. p options
  61. puts "ARGV:"
  62. p ARGV
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement