diff --git a/src/cligen/flag.cr b/src/cligen/flag.cr index c425999..e6b8e71 100644 --- a/src/cligen/flag.cr +++ b/src/cligen/flag.cr @@ -74,11 +74,20 @@ module CliGen {% elem = T.type_vars.first %} {% raise "ERROR : Flag(#{T}) : Error your flag subtype #{elem} must have a to_s method" unless elem.class.has_method? :to_s %} {% end %} + unless @default.nil? + {% if T < Array %} + default = "[" + @default.not_nil!.map(&.to_s).join(", ") + "]" + {% else %} + default = @default.not_nil!.to_s + {% end %} + else + default = nil + end meta = FlagMeta.new( type: {{T.stringify}}, array: {{ T < Array ? true : false }}, options: {% if T < Array %} @options.try(&.first.map(&.to_s)) {% else %} @options.try(&.map(&.to_s)) {% end %}, - default: @default.try(&.to_s), + default: default, format: @format.try(&.source) ) super(var, short, long, env_var, description, delimiter, meta) diff --git a/src/cligen/template/cmd_help.ecr b/src/cligen/template/cmd_help.ecr index 6ee01c9..344802f 100644 --- a/src/cligen/template/cmd_help.ecr +++ b/src/cligen/template/cmd_help.ecr @@ -14,7 +14,7 @@ Flags: <%- else -%> <%- flags = [flag.short,flag.long.strip] -%> <%- end -%> - <%= "%-#{len}s %s" % [flags.join(","), flag.description.strip] %><%= flag.meta.options.nil? ? "" : " (valid: #{flag.meta.options.not_nil!.join(", ")})" %><%= flag.meta.default.nil? ? "" : " (default: #{flag.meta.default.to_s})" %> + <%= "%-#{len}s %s" % [flags.join(","), flag.description.strip] %><%= flag.meta.options.nil? ? "" : " (valid: #{flag.meta.options.not_nil!.join(", ")})" %><%= flag.meta.default.nil? ? "" : " (default: #{flag.meta.default.not_nil!})" %> <%- if verbose? -%> <%= "%-#{len}s %s" % ["", "Type: #{flag.meta.type}"] %> <%= "%-#{len}s %s" % ["", "ENV VAR: #{flag.env_var}"] %>