require "./src/cligen" #CliGen.override_help_template "test.ecr" module MyModule class MyData extend CliGen::Coercable extend CliGen::Parseable DELIMITER = '.' getter val : Int32 def initialize(@val : Int32) end def self.parse_args(args : Array(CliGen::Arg)) : MyData arg = args.first arg.processed new(val: arg.value.to_i32) end def self.coerce(arg : String) : MyData if arg =~ /^[[:digit:]]+$/ new(val: arg.to_i32) else raise "ERROR parsing #{arg}" end end end @[CliGen::CommandInfo(description: "Test")] class MyClass < CliGen::Command argument(myvar3 : Array(MyModule::MyData), description: "Custom data") argument(myvar2 : MyModule::MyData, description: "Custom data", validation: ->(v : MyModule::MyData) : Bool { v.val != 2 }) argument(myvar : Int32 = 123, description: "Set myvar", validation: ->(v : Int32) : Bool { (0..123).includes?(v) }, on_match: ->() : Nil { puts "Was called" }) subcommand dothing : Nil, description: "DOING ALL THE THINGS" do puts "DO THE THING : myvar : #{@myvar}" puts @myvar2.val @myvar3.each do |var| puts var.val end end end CliGen::App.process end