This commit is contained in:
Tristan Ancelet
2026-02-23 12:58:15 -06:00
parent b91ecad7e5
commit 9b50633c0e
6 changed files with 165 additions and 19 deletions

View File

@@ -1,12 +1,14 @@
module CliGenerator::Parser
macro extended
{% verbatim do %}
macro define_parser
def self.make_parser(parent_parser : OptionParser) : OptionParser
{% puts "#{@type.name} OptionParser is being generated" %}
{% name = @type.name.split("::").last %}
{% var = name.downcase %}
{% info = @type.annotation(::CliGenerator::CommandInfo) %}
{% raise "ERROR : No CommandInfo annotation provided to #{@type.name}" unless info %}
subparser = OptionParser.new do |parser|
parser.banner = {{@type.name}}::HEADER
{% subcommands = @type.class.methods.select(&.annotation(::CliGenerator::SubCommand)) %}
@@ -46,6 +48,7 @@ module CliGenerator::Parser
}
end
end
{% end %}
end
end