An action to be performed by the CLI. This is a generic class to be
extended by MiGA::Cli::Action::* classes. Do not attempt creating directly
with new
, use instead the ::load interface.
# File lib/miga/cli/action.rb, line 12 def load(task, cli) require "miga/cli/action/#{task}" camel = task.to_s.gsub(/(?:_|^)(\S)/, &:upcase).delete('_') klass = Object.const_get("MiGA::Cli::Action::#{camel}") klass.new(cli) end
# File lib/miga/cli/action.rb, line 22 def initialize(cli) @cli = cli end
Complete the action
# File lib/miga/cli/action.rb, line 50 def complete cli.say 'Done' end
What to do when cli.argv is empty
# File lib/miga/cli/action.rb, line 63 def empty_action cli.argv << '-h' end
Launch the sequence
# File lib/miga/cli/action.rb, line 28 def launch MiGA.DEBUG 'Cli::Action.launch' empty_action if cli.argv.empty? parse_cli perform complete end
Name of the action, as referred to by the CLI
# File lib/miga/cli/action.rb, line 56 def name camel = self.class.to_s.gsub(/.*::/, '') camel.gsub(/(\S)([A-Z])/, '\1_\2').downcase end
Parse the CLI object
# File lib/miga/cli/action.rb, line 38 def parse_cli raise "Undefined interface for the command line of #{cli.task}" end
Perform the action
# File lib/miga/cli/action.rb, line 44 def perform raise "Undefined action for the command line of #{cli.task}" end