examples/_src/args/opts.erb.rb
#!/usr/bin/env ruby
$: << File.expand_path('lib')
<%= run sq(<<-'rb')
require 'cl'
module Opts
class Bool < Cl::Cmd
register :bool
arg :bool, type: :bool
def run
p cmd: registry_key, bool: bool
end
end
class Types < Cl::Cmd
register :types
arg :a, type: :bool
arg :b, type: :int
arg :c, type: :float
arg :d
def run
p cmd: registry_key, a: a, b: b, c: c, d: d
end
end
end
rb
-%>
<%= run 'Cl.new($0).run(%w(bool on))' %>
<%= out '{:cmd=>:bool, :bool=>true}' %>
<%= run 'Cl.new($0).run(%w(types true 1 1.2 foo))' %>
<%= out '{:cmd=>:types, :a=>true, :b=>1, :c=>1.2, :d=>"foo"}' %>
<%= run 'Cl.new($0).run(%w(types true 1 1.2 foo bar))' %>
<%= out sq(<<-'str')
Too many arguments: true 1 1.2 foo bar (given: 5, allowed: 4)
Usage: bin/examples types [a:bool] [b:int] [c:float] [d] [options]
Arguments:
a type: bool
b type: int
c type: float
d type: string
Options:
--help Get help on this command
str
%>
<%= run 'Cl.new($0).run(%w(types true one 1.2))' %>
<%= out sq(<<-'str')
Wrong argument type (given: "one", expected: int)
Usage: bin/examples types [a:bool] [b:int] [c:float] [d] [options]
Arguments:
a type: bool
b type: int
c type: float
d type: string
Options:
--help Get help on this command
str
%>
<%= run 'Cl.new($0).run(%w(types true 1 one))' %>
<%= out sq(<<-'str')
Wrong argument type (given: "one", expected: float)
Usage: bin/examples types [a:bool] [b:int] [c:float] [d] [options]
Arguments:
a type: bool
b type: int
c type: float
d type: string
Options:
--help Get help on this command
str
%>