class Argsy

Public Class Methods

new(ver='0.0.1', &bl) click to toggle source
# File lib/argsy.rb, line 10
def initialize(ver='0.0.1', &bl) @name = File.basename($0, '.*'); @ver = ver; @cmds = {}; instance_eval(&bl) end

Public Instance Methods

command(name, desc='', &bl) click to toggle source
# File lib/argsy.rb, line 11
def command(name, desc='', &bl) @cmds[name.to_s] = Command.new(name.to_s, desc, &bl) end
run(a=ARGV) click to toggle source
# File lib/argsy.rb, line 12
def run(a=ARGV)
  (puts "#{@name} version #{@ver}"; exit) if a == ['--version']
  (puts "Usage: #{@name} CMD [--help] [--version]\n" + @cmds.values.map(&:to_s).join("\n"); exit) if !@cmds.key?(a[0])
  c = @cmds[a[0]]; c.op.parse(a, into: c.opts); c.do_it.call(c.opts)
end