class Gitodo::CommandLineOptions
Public Class Methods
parse(args)
click to toggle source
# File lib/gitodo/command_line_options.rb, line 6 def self.parse(args) options = OpenStruct.new explicit_command = false options.command = "add" # options.inplace = false # options.encoding = "utf8" # options.transfer_type = :auto # options.verbose = false opt_parser = OptionParser.new do |opts| opts.banner = "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 options.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 options.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 options.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 options.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) options end