Class: Gitodo::CommandLineOptions
- Inherits:
-
Object
- Object
- Gitodo::CommandLineOptions
- Defined in:
- lib/gitodo/command_line_options.rb
Class Method Summary collapse
Class Method Details
.parse(args) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/gitodo/command_line_options.rb', line 6 def self.parse(args) = OpenStruct.new explicit_command = false .command = "add" # options.inplace = false # options.encoding = "utf8" # options.transfer_type = :auto # options.verbose = false opt_parser = OptionParser.new do |opts| opts. = "Usage: gitodo [options]" opts.separator "" opts.separator "Specific options:" # Commands opts.on("--done", "Finish one or more todo items!") do if explicit_command puts "Specified multiple commands" exit 1 end .command = "done" explicit_command = true end # opts.on_tail("--version", "Show version") do # puts ::Version.join('.') # exit # end opts.on("--list", "List the open todo items!") do if explicit_command puts "Specified multiple commands" exit 1 end .command = "list" explicit_command = true end opts.on("--check", "Check if there are any open todo items, and fail if there are any") do if explicit_command puts "Specified multiple commands" exit 1 end .command = "check" explicit_command = true end opts.on("--add", "(Default) Add a new todo item") do if explicit_command puts "Specified multiple commands" exit 1 end .command = "add" explicit_command = true end # Mandatory argument. # opts.on("-r", "--require LIBRARY", # "Require the LIBRARY before executing your script") do |lib| # options.library << lib # end # # # Optional argument; multi-line description. # opts.on("-i", "--inplace [EXTENSION]", # "Edit ARGV files in place", # " (make backup if EXTENSION supplied)") do |ext| # options.inplace = true # options.extension = ext || '' # options.extension.sub!(/\A\.?(?=.)/, ".") # Ensure extension begins with dot. # end # # # Cast 'delay' argument to a Float. # opts.on("--delay N", Float, "Delay N seconds before executing") do |n| # options.delay = n # end # # # Cast 'time' argument to a Time object. # opts.on("-t", "--time [TIME]", Time, "Begin execution at given time") do |time| # options.time = time # end # Cast to octal integer. # opts.on("-F", "--irs [OCTAL]", OptionParser::OctalInteger, # "Specify record separator (default \\0)") do |rs| # options.record_separator = rs # end # # # List of arguments. # opts.on("--list x,y,z", Array, "Example 'list' of arguments") do |list| # options.list = list # end # Keyword completion. We are specifying a specific set of arguments (CODES # and CODE_ALIASES - notice the latter is a Hash), and the user may provide # the shortest unambiguous text. # code_list = (CODE_ALIASES.keys + CODES).join(',') # opts.on("--code CODE", CODES, CODE_ALIASES, "Select encoding", # " (#{code_list})") do |encoding| # options.encoding = encoding # end # Optional argument with keyword completion. # opts.on("--type [TYPE]", [:text, :binary, :auto], # "Select transfer type (text, binary, auto)") do |t| # options.transfer_type = t # end # Boolean switch. # opts.on("-v", "--[no-]verbose", "Run verbosely") do |v| # options.verbose = v # end # opts.separator "" # opts.separator "Common options:" # No argument, shows at tail. This will print an options summary. # Try it and see! # opts.on_tail("-h", "--help", "Show this message") do # puts opts # exit # end # Another typical switch to print the version. # opts.on_tail("--version", "Show version") do # puts ::Version.join('.') # exit # end end opt_parser.parse!(args) end |