added def_init

This commit is contained in:
Tristan Ancelet
2026-08-12 11:59:49 -05:00
parent 976ed10f75
commit 37c5083ae2
2 changed files with 28 additions and 0 deletions
+6
View File
@@ -6,12 +6,18 @@ require "./command/argument"
require "./command/selection"
require "./command/help_template"
require "./command/subcommand"
require "./command/def_init"
module CliGen
class Command
macro inherited
{% verbatim do %}
macro finished
{% anno = @type.annotation(CliGen::CommandInfo) %}
{% raise "" unless anno %}
{% if anno[:def_init] %}
def_init
{% end %}
def initialize(*, handler : CliGen::BaseCommandNode)
{% verbatim do %}
{% for var in @type.instance_vars %}
+22
View File
@@ -0,0 +1,22 @@
module CliGen
class Command
macro def_init
def initialize
{% verbatim do %}
{% for var in @type.instance_vars %}
{% raise "ERROR : Can't define a default initializer if #{var.name} doesn't have a default" if var.default_value.nil? && !var.type.nilable? %}
@{{var.name}} = {{var.default_value}}
{% end %}
{% end %}
end
def after_initialize
@@instance = self
end
def self.get
@@instance ||= new
end
end
end
end