class Avalanche::CLI::Command
Public Class Methods
new(usage, options, handler)
click to toggle source
# File lib/avalanche/cli/command.rb, line 4 def initialize(usage, options, handler) parts = usage.split(/\s+/) @name = parts.shift usage = parts.join(" ") @handler = handler.to_proc @options = {} @opts = OptionParser.new @opts.program_name = @name @opts.banner = "Usage: #{@name} #{usage}" options.each do |name, opts| @opts.on(*opts) do |v| @options[name] = v end end @opts.base.append("", nil, nil) @opts.base.append("Additional options:", nil, nil) @opts.on_tail("-h", "--help", "Show this message") { print_help } @opts.on_tail("-d", "--debug", "Enable debug output") { enable_debug } end
Public Instance Methods
run(argv)
click to toggle source
# File lib/avalanche/cli/command.rb, line 29 def run(argv) $0 = "#{@name} #{argv.join(" ")}" @handler.call(@options, @opts.permute!(argv)) rescue ArgumentError, OptionParser::InvalidOption => e @opts.warn(e.message) if @debug puts "" puts e.backtrace puts "" end print_help rescue Interrupt exit 0 rescue => e if @debug puts "" puts e.backtrace puts "" end @opts.abort("#{e.class.name}: #{e.message}") end
to_proc()
click to toggle source
# File lib/avalanche/cli/command.rb, line 54 def to_proc proc { |opts, args| run(args) } end
Private Instance Methods
enable_debug()
click to toggle source
# File lib/avalanche/cli/command.rb, line 65 def enable_debug @debug = true end
print_help()
click to toggle source
# File lib/avalanche/cli/command.rb, line 60 def print_help puts @opts exit 1 end