class Swamp::Command
Attributes
action[R]
description[RW]
name[R]
options[R]
Public Class Methods
new(cli, name)
click to toggle source
# File lib/swamp/command.rb, line 11 def initialize(cli, name) @cli = cli @name = name @options = {} @args = [] end
Public Instance Methods
add_option(command, *args, &block)
click to toggle source
# File lib/swamp/command.rb, line 22 def add_option(command, *args, &block) @options[command] = {spec: [command] + args, block: block} end
parse_options(argv)
click to toggle source
# File lib/swamp/command.rb, line 26 def parse_options(argv) options = {} OptionParser.new do |opts| opts.version = @cli.version opts.banner = "Usage: #{@cli.app_name} #{@name} [options]" @options.values.each do |option| opts_block = proc { |value| option[:block].call(value, options) } opts.on(*option[:spec], &opts_block) end end.parse!(argv) options rescue OptionParser::InvalidOption, OptionParser::MissingArgument => e raise Swamp::Error, e.message end
set_action(&block)
click to toggle source
# File lib/swamp/command.rb, line 18 def set_action(&block) @action = block end