class Nagi::OptionParser
Public Class Methods
new(*args, &block)
click to toggle source
Calls superclass method
# File lib/nagi/optionparser.rb, line 4 def initialize(*args, &block) @arguments = [] @options = {} super(*args, &block) self.banner = "Usage: #{$0} [options]" self.on_tail('-h', '--help', 'Display this help message') do puts help exit 0 end self.on_tail('-V', '--version', 'Display version information') do puts "#{program_name} #{version or "(unknown version)"}".strip exit 0 end end
Public Instance Methods
argument(name)
click to toggle source
# File lib/nagi/optionparser.rb, line 23 def argument(name) @arguments.push(name) self.banner += " <#{name}>" end
parse!(args, into: nil)
click to toggle source
Calls superclass method
# File lib/nagi/optionparser.rb, line 28 def parse!(args, into: nil) begin @options.clear super(args) @arguments.each do |a| @options[a] = args.shift or raise ArgumentError.new("Argument '#{a}' not given") end raise ArgumentError.new("Too many arguments") if args.length > 0 rescue ::OptionParser::ParseError => e raise ArgumentError.new(e.message) end return @options end
switch(name, *args)
click to toggle source
# File lib/nagi/optionparser.rb, line 42 def switch(name, *args) on(*args) do |value| @options[name] = value end end