Module: Ergane::DSL::CommandDSL
- Included in:
- Command
- Defined in:
- lib/ergane/dsl/command_dsl.rb
Instance Method Summary collapse
- #aliases(*names) ⇒ Object
- #argument(name, type = String, description: nil, required: true, default: nil) ⇒ Object
- #command(name, aliases: [], &block) ⇒ Object
- #description(text = nil) ⇒ Object
- #flag(name, short: nil, description: nil) ⇒ Object
- #option(name, type = nil, short: nil, description: nil, default: nil, required: false, optional: false) ⇒ Object
Instance Method Details
#aliases(*names) ⇒ Object
10 11 12 |
# File 'lib/ergane/dsl/command_dsl.rb', line 10 def aliases(*names) names.any? ? (@aliases = names.flatten.map(&:to_sym)) : (@aliases || []) end |
#argument(name, type = String, description: nil, required: true, default: nil) ⇒ Object
25 26 27 28 29 |
# File 'lib/ergane/dsl/command_dsl.rb', line 25 def argument(name, type = String, description: nil, required: true, default: nil) argument_definitions << ArgumentDefinition.new( name, type, description: description, required: required, default: default ) end |
#command(name, aliases: [], &block) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/ergane/dsl/command_dsl.rb', line 31 def command(name, aliases: [], &block) klass = Class.new(command_base_for(name)) klass.command_name = name.to_sym klass.aliases(*aliases) if aliases.any? const_name = name.to_s.split("_").map(&:capitalize).join const_set(const_name, klass) if const_name.match?(/\A[A-Z]/) BlockDSL.new(klass).instance_eval(&block) if block klass end |
#description(text = nil) ⇒ Object
6 7 8 |
# File 'lib/ergane/dsl/command_dsl.rb', line 6 def description(text = nil) text ? (@description = text) : (@description || "") end |
#flag(name, short: nil, description: nil) ⇒ Object
21 22 23 |
# File 'lib/ergane/dsl/command_dsl.rb', line 21 def flag(name, short: nil, description: nil) option(name, nil, short: short, description: description, default: false) end |
#option(name, type = nil, short: nil, description: nil, default: nil, required: false, optional: false) ⇒ Object
14 15 16 17 18 19 |
# File 'lib/ergane/dsl/command_dsl.rb', line 14 def option(name, type = nil, short: nil, description: nil, default: nil, required: false, optional: false) option_definitions[name.to_sym] = OptionDefinition.new( name, type, short: short, description: description, default: default, required: required, optional: optional ) end |