Class: Rbcli::Command
- Inherits:
-
Object
- Object
- Rbcli::Command
- Defined in:
- lib/rbcli/engine/command.rb
Class Method Summary collapse
- .action(&block) ⇒ Object
- .add_command(name, klass) ⇒ Object
- .commands ⇒ Object
- .config_default(*params) ⇒ Object
- .config_defaults(filename) ⇒ Object
-
.description(desc) ⇒ Object
Interface Functions.
-
.descriptions(indent_size, justification) ⇒ Object
Returns all descriptions for display in CLI help.
- .inherited(subklass) ⇒ Object
- .parameter(name, description, type: :boolean, default: nil, required: false, permitted: nil) ⇒ Object
-
.runcmd(cmd, local_params, cliopts) ⇒ Object
Run a given command.
- .usage(usage) ⇒ Object
Instance Method Summary collapse
- #action ⇒ Object
- #description ⇒ Object
- #paramlist ⇒ Object
-
#parseopts(*args) ⇒ Object
This method reads the parameters provided by the class and parses them from the CLI.
- #usage ⇒ Object
Class Method Details
.action(&block) ⇒ Object
29 |
# File 'lib/rbcli/engine/command.rb', line 29 def self.action █ @action = block end |
.add_command(name, klass) ⇒ Object
12 13 14 |
# File 'lib/rbcli/engine/command.rb', line 12 def self.add_command name, klass @commands[name.downcase] = klass.new end |
.commands ⇒ Object
16 17 18 |
# File 'lib/rbcli/engine/command.rb', line 16 def self.commands @commands end |
.config_default(*params) ⇒ Object
49 50 51 |
# File 'lib/rbcli/engine/command.rb', line 49 def self.config_default *params Rbcli::Config::add_default *params end |
.config_defaults(filename) ⇒ Object
45 46 47 |
# File 'lib/rbcli/engine/command.rb', line 45 def self.config_defaults filename Rbcli::Config::add_defaults filename end |
.description(desc) ⇒ Object
Interface Functions
23 |
# File 'lib/rbcli/engine/command.rb', line 23 def self.description desc; @desc = desc end |
.descriptions(indent_size, justification) ⇒ Object
Returns all descriptions for display in CLI help
72 73 74 75 76 77 78 79 80 |
# File 'lib/rbcli/engine/command.rb', line 72 def self.descriptions indent_size, justification #descmap = @commands.map { |name, klass| [name, klass.description] }.to_h @commands.map do |name, cmdobj| desc = '' indent_size.times { desc << ' ' } desc << name.ljust(justification) desc << cmdobj.description end.join("\n") end |
.inherited(subklass) ⇒ Object
8 9 10 |
# File 'lib/rbcli/engine/command.rb', line 8 def self.inherited subklass @commands[subklass.name.downcase] = subklass.new end |
.parameter(name, description, type: :boolean, default: nil, required: false, permitted: nil) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/rbcli/engine/command.rb', line 32 def self.parameter name, description, type: :boolean, default: nil, required: false, permitted: nil default ||= false if (type == :boolean || type == :bool || type == :flag) @paramlist ||= {} @paramlist[name.to_sym] = { description: description, type: type, default: default, required: required, permitted: permitted } end |
.runcmd(cmd, local_params, cliopts) ⇒ Object
Run a given command
60 61 62 63 64 65 66 67 |
# File 'lib/rbcli/engine/command.rb', line 60 def self.runcmd cmd, local_params, cliopts args = local_params.delete :args params = local_params global_opts = cliopts config = Rbcli::config @commands[cmd].action.call params, args, global_opts, config end |
.usage(usage) ⇒ Object
26 |
# File 'lib/rbcli/engine/command.rb', line 26 def self.usage usage; @usage = usage end |
Instance Method Details
#action ⇒ Object
30 |
# File 'lib/rbcli/engine/command.rb', line 30 def action; self.class.instance_variable_get :@action end |
#description ⇒ Object
24 |
# File 'lib/rbcli/engine/command.rb', line 24 def description; self.class.instance_variable_get :@desc end |
#paramlist ⇒ Object
43 |
# File 'lib/rbcli/engine/command.rb', line 43 def paramlist; self.class.instance_variable_get :@paramlist end |
#parseopts(*args) ⇒ Object
This method reads the parameters provided by the class and parses them from the CLI
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/rbcli/engine/command.rb', line 85 def parseopts *args params = paramlist command_name = self.class.name.split('::')[-1].downcase command_desc = description command_usage = usage optx = Trollop:: do data = Rbcli.configuration <<-EOS #{data[:description]} Selected Command: #{command_name.ljust(21)}#{command_desc} Usage: #{data[:scriptname]} [options] #{command_name} [parameters] #{command_usage} Command-specific Parameters: EOS params.each do |name, opts| opt name, opts[:description], type: opts[:type], default: opts[:default], required: opts[:required], permitted: opts[:permitted] end if params.is_a? Hash end optx[:args] = ARGV optx end |
#usage ⇒ Object
27 |
# File 'lib/rbcli/engine/command.rb', line 27 def usage; self.class.instance_variable_get :@usage end |