Module: Ergane::DSL::CommandDSL

Extended by:
Macros
Included in:
Command
Defined in:
lib/ergane/dsl/command_dsl.rb

Instance Method Summary collapse

Methods included from Macros

dsl_value

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: nil, 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: nil, 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

#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