Arguments types¶
So far we used two types for an argument: String and String?.
But like options you can use numeric types too.
The supported types are:
- all subtypes of
Int:Int32,UInt32, and all others - all subtypes of
Float:BigFloat,Float32andFloat64 String- and all those types combined with
Nil:Int32?,Float32?,String?, and so on.
Bool is not supported.
It can only be used with a flag.
During the parsing, Clip tries to convert the string to the attribute's type.
If any error happens, a Clip::ParsingError is raised (see the errors section for details).
require "clip"
module Myapplication
VERSION = "0.1.0"
struct Command
include Clip::Mapper
getter name : Int32
end
def self.run
begin
command = Command.parse
rescue ex : Clip::Error
puts ex
return
end
if command.is_a?(Clip::Mapper::Help)
puts command.help
else
hello(command.name)
end
end
def self.hello(name)
puts "Hello #{name}"
end
end
Myapplication.run
$ shards build
Dependencies are satisfied
Building: myapplication
$ ./bin/myapplication --help
Usage: ./bin/myapplication [OPTIONS] NAME
Arguments:
NAME [required]
Options:
--help Show this message and exit.
$ ./bin/myapplication Alice
Error:
argument's value is invalid: NAME
$ ./bin/myapplication 42
Hello 42