11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/rbcli/components/commands/command_old.rb', line 11
def inherited subklass
raise Rbcli::CommandError.new "The command #{subklass.name.downcase} cannot be defined twice." unless @commands[subklass.name.downcase].nil?
subklass.instance_variable_set :@data, {
description: nil,
helptext: nil,
default: nil,
action: nil,
script: nil,
usage: nil,
parameter_prompts: {},
parser: Optimist::Parser.new
}
@commands[subklass.name.downcase] = subklass.new
Rbcli::Cliopts.register_command subklass.name.downcase
Rbcli.log.debug "Registered command '#{subklass.name.downcase}'", "CORE"
Rbcli::Engine.register_operation Proc.new {
Rbcli.log.debug "Running command '#{Rbcli::Cliopts.cmd[:name]}'", "CORE"
Rbcli::Cliopts.cmd[:command].data[:action].call(Rbcli::Cliopts.opts,
Rbcli::Cliopts.cmd[:params],
Rbcli::Cliopts.cmd[:args],
(Rbcli::Configurate.constants.include?(:Config) ? Rbcli.configuration(:config)[:config] : Rbcli::Config.new(suppress_errors: true)),
(Rbcli::Configurate.constants.include?(:Envvars) ? Rbcli.configuration(:envvars)[:envvars] : Rbcli::Config.new(suppress_errors: true))
) unless Rbcli::Cliopts.cmd[:command].data[:action].nil?
Rbcli::Cliopts.cmd[:command].data[:script].execute(Rbcli::Cliopts.opts,
Rbcli::Cliopts.cmd[:params],
Rbcli::Cliopts.cmd[:args],
(Rbcli::Configurate.constants.include?(:Config) ? Rbcli.configuration(:config)[:config] : Rbcli::Config.new(suppress_errors: true)),
(Rbcli::Configurate.constants.include?(:Envvars) ? Rbcli.configuration(:envvars)[:envvars] : Rbcli::Config.new(suppress_errors: true))
) unless Rbcli::Cliopts.cmd[:command].data[:script].nil?
}, name: :run_command, priority: 100 if @commands.count == 1
end
|