Class: Argsy

Inherits:
Object
  • Object
show all
Defined in:
lib/argsy.rb

Defined Under Namespace

Classes: Command

Instance Method Summary collapse

Constructor Details

#initialize(ver = '0.0.1', &bl) ⇒ Argsy

Returns a new instance of Argsy.



10
# File 'lib/argsy.rb', line 10

def initialize(ver='0.0.1', &bl) @name = File.basename($0, '.*'); @ver = ver; @cmds = {}; instance_eval(&bl) end

Instance Method Details

#command(name, desc = '', &bl) ⇒ Object



11
# 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) ⇒ Object



12
13
14
15
16
# 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