# File lib/rhc/commands/base.rb, line 14 def initialize(options=Commander::Command::Options.new, config=RHC::Config.new) @options, @config = options, config end
Provide an alias to the command. The alias will not be shown in help, but will be available in autocompletion and at execution time.
Supported options:
:deprecated - if true, a warning will be displayed when the command is executed :root_command - if true, do not prepend the object name to the command
# File lib/rhc/commands/base.rb, line 116 def self.alias_action(action, options={}) options[:action] = action.is_a?(Array) ? action : action.to_s.split(' ') aliases << options end
# File lib/rhc/commands/base.rb, line 133 def self.argument(name, description, switches=[], options={}) arg_type = options[:type] option_symbol = Commander::Runner.switch_to_sym(switches.last) args_metadata << {:name => name, :description => description, :switches => switches, :option_symbol => option_symbol, :covered_by => options[:covered_by], :optional => options[:optional], :default => options[:default], :allow_nil => options[:allow_nil], :hide => options[:hide], :type => arg_type} end
# File lib/rhc/commands/base.rb, line 149 def self.default_action(action) options[:default] = action unless action == :help name = self.object_name raise InvalidCommand, "object_name must be set" if name.empty? RHC::Commands.add((@options || {}).merge({ :name => name, :class => self, :method => options[:default] })); end
# File lib/rhc/commands/base.rb, line 86 def self.description(*args) o = args.join(' ') options[:description] = o.strip_heredoc end
# File lib/rhc/commands/base.rb, line 56 def self.method_added(method) return if self == RHC::Commands::Base return if private_method_defined? method return if protected_method_defined? method prefix = self.object_name method_name = method.to_s == 'run' ? nil : method.to_s.gsub("_", "-") name = [prefix, method_name].compact raise InvalidCommand, "Either object_name must be set or a non default method defined" if name.empty? aliases.each{ |a| a[:action].unshift(prefix) unless a[:root_command] } if prefix RHC::Commands.add((@options || {}).merge({ :name => name, :class => self, :method => method })); @options = nil end
# File lib/rhc/commands/base.rb, line 77 def self.object_name(value=nil) @object_name ||= begin value ||= if self.name && !self.name.empty? self.name.split('::').last end value.to_s.split(/(?=[A-Z])/).join('-').downcase if value end end
# File lib/rhc/commands/base.rb, line 121 def self.option(switches, description, options={}) options_metadata << {:switches => switches, :description => description, :required => options[:required], :covered_by => options[:covered_by], :deprecated => options[:deprecated], :type => options[:type], :hide => options[:hide], :default => options[:default], } end
# File lib/rhc/commands/base.rb, line 90 def self.summary(value) options[:summary] = value end
def self.deprecated(msg)
options[:deprecated] = msg
end
# File lib/rhc/commands/base.rb, line 99 def self.suppress_wizard @suppress_wizard = true end
# File lib/rhc/commands/base.rb, line 103 def self.suppress_wizard? @suppress_wizard end
# File lib/rhc/commands/base.rb, line 93 def self.syntax(value) options[:syntax] = value end
# File lib/rhc/commands/base.rb, line 168 def self.aliases options[:aliases] ||= [] end
# File lib/rhc/commands/base.rb, line 165 def self.args_metadata options[:args] ||= [] end
# File lib/rhc/commands/base.rb, line 171 def self.options @options ||= {} end
# File lib/rhc/commands/base.rb, line 162 def self.options_metadata options[:options] ||= [] end
# File lib/rhc/commands/base.rb, line 50 def help(*args) raise ArgumentError, "Please specify an action to take" end
Return a client object capable of making calls to the OpenShift API that transforms intent and options, to remote calls, and then handle the output (or failures) into exceptions and formatted object output. Most interactions should be through this call pattern.
# File lib/rhc/commands/base.rb, line 31 def rest_client(opts={}) @rest_client ||= begin auth = RHC::Auth::Basic.new(options) auth = RHC::Auth::Token.new(options, auth, token_store) if (options.use_authorization_tokens || options.token) && !(options.rhlogin && options.password) debug "Authenticating with #{auth.class}" client_from_options(:auth => auth) end if opts[:min_api] && opts[:min_api].to_f > @rest_client.api_version_negotiated.to_f raise RHC::ServerAPINotSupportedException.new(opts[:min_api], @rest_client.api_version_negotiated) end @rest_client end
# File lib/rhc/commands/base.rb, line 46 def token_store @token_store ||= RHC::Auth::TokenStore.new(config.home_conf_path) end