Added options to Command.argument macro
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
module CliGen
|
module CliGen
|
||||||
class Command
|
class Command
|
||||||
macro argument(variable, description, long = nil, short = nil, validation = nil, on_match = nil, def_setter = false)
|
macro argument(variable, description, long = nil, short = nil, validation = nil, on_match = nil, def_setter = false, options = nil)
|
||||||
{% raise "ERROR : CliGen::Command.argument : def_setter must be a Bool" unless def_setter.is_a? BoolLiteral %}
|
{% raise "ERROR : CliGen::Command.argument : def_setter must be a Bool" unless def_setter.is_a? BoolLiteral %}
|
||||||
{% raise "ERROR : CliGen::Command.argument : First argument (#{variable}) must be a TypeDeclaration (ex: '<var> : <type> [= val]')" unless variable.is_a? TypeDeclaration %}
|
{% raise "ERROR : CliGen::Command.argument : First argument (#{variable}) must be a TypeDeclaration (ex: '<var> : <type> [= val]')" unless variable.is_a? TypeDeclaration %}
|
||||||
{% name = variable.var %}
|
{% name = variable.var %}
|
||||||
@@ -32,8 +32,12 @@ module CliGen
|
|||||||
{% raise "ERROR : CliGen::Command.argument(#{name}) : Provided validation input value must be #{type}. EX: #{example}" %}
|
{% raise "ERROR : CliGen::Command.argument(#{name}) : Provided validation input value must be #{type}. EX: #{example}" %}
|
||||||
{% end %}
|
{% end %}
|
||||||
{% end %}
|
{% end %}
|
||||||
|
{% if options %}
|
||||||
|
{% options = options.resolve if options.is_a? Path %}
|
||||||
|
{% raise "ERROR : CliGen::Command.argument(#{name}) : Provided options must be an ArrayLiteral" unless options.is_a? ArrayLiteral %}
|
||||||
|
{% end %}
|
||||||
|
|
||||||
@[CliGen::Argument(short: {{short}}, long: {{long}}, description: {{description}}, validation: {{validation}}, on_match: {{on_match}})]
|
@[CliGen::Argument(short: {{short}}, long: {{long}}, description: {{description}}, validation: {{validation}}, on_match: {{on_match}}, options: {{options}})]
|
||||||
@{{variable}}
|
@{{variable}}
|
||||||
|
|
||||||
{% if def_setter %}
|
{% if def_setter %}
|
||||||
|
|||||||
@@ -7,8 +7,11 @@ module CliGen
|
|||||||
{% raise "ERROR : CliGen::Command.selection : You must provide a short or long" unless long || short %}
|
{% raise "ERROR : CliGen::Command.selection : You must provide a short or long" unless long || short %}
|
||||||
{% raise "ERROR : CliGen::Command.selection : You must provide a description" unless description %}
|
{% raise "ERROR : CliGen::Command.selection : You must provide a description" unless description %}
|
||||||
{% raise "ERROR : CliGen::Command.selection : Provided description must be a String" unless description.is_a? StringLiteral %}
|
{% raise "ERROR : CliGen::Command.selection : Provided description must be a String" unless description.is_a? StringLiteral %}
|
||||||
{% raise "ERROR : CliGen::Command.selection : You must provide options" unless options %}
|
{% raise "ERROR : CliGen::Command.selection : You must provide options" unless options.is_a? ArrayLiteral %}
|
||||||
{% raise "ERROR : CliGen::Command.selection : Provided options must be " unless options %}
|
{% raise "ERROR : CliGen::Command.selection : Provided options must be " unless options. %}
|
||||||
|
|
||||||
|
@[CliGen::Argument(short: {{short}}, long: {{long}}, description: {{description}}, validation: {{validation}}, on_match: {{on_match}})]
|
||||||
|
@{{variable}}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user