Clamp::Command
# File lib/hammer_cli/abstract.rb, line 118 def self.inherited_output_definition od = nil if superclass.respond_to? :output_definition od_super = superclass.output_definition od = od_super.dup unless od_super.nil? end od end
# File lib/hammer_cli/abstract.rb, line 55 def initialize(*args) super context[:path] ||= [] context[:path] << self end
# File lib/hammer_cli/abstract.rb, line 103 def self.output(definition=nil, &block) dsl = HammerCLI::Output::Dsl.new dsl.build &block if block_given? output_definition.append definition.fields unless definition.nil? output_definition.append dsl.fields end
# File lib/hammer_cli/abstract.rb, line 127 def self.output_definition @output_definition = @output_definition || inherited_output_definition || HammerCLI::Output::Definition.new @output_definition end
# File lib/hammer_cli/abstract.rb, line 65 def self.remove_subcommand(name) self.recognised_subcommands.delete_if do |sc| if sc.is_called?(name) logger.info "subcommand #{name} (#{sc.subcommand_class}) was removed." true else false end end end
# File lib/hammer_cli/abstract.rb, line 82 def self.subcommand(name, description, subcommand_class = self, &block) existing = find_subcommand(name) if existing raise HammerCLI::CommandConflict, "can't replace subcommand #{name} (#{existing.subcommand_class}) with #{name} (#{subcommand_class})" end super end
# File lib/hammer_cli/abstract.rb, line 76 def self.subcommand!(name, description, subcommand_class = self, &block) remove_subcommand(name) self.subcommand(name, description, subcommand_class, &block) logger.info "subcommand #{name} (#{subcommand_class}) was created." end
# File lib/hammer_cli/abstract.rb, line 192 def self.autoload_subcommands commands = constants.map { |c| const_get(c) }.select { |c| c <= HammerCLI::AbstractCommand } commands.each do |cls| subcommand cls.command_name, cls.desc, cls end end
# File lib/hammer_cli/abstract.rb, line 187 def self.command_name(name=nil) @name = name if name @name || (superclass.respond_to?(:command_name) ? superclass.command_name : nil) end
# File lib/hammer_cli/abstract.rb, line 199 def self.define_simple_writer_for(attribute, &block) define_method(attribute.write_method) do |value| value = instance_exec(value, &block) if block if attribute.respond_to?(:context_target) && attribute.context_target context[attribute.context_target] = value end attribute.of(self).set(value) end end
# File lib/hammer_cli/abstract.rb, line 182 def self.desc(desc=nil) @desc = desc if desc @desc end
# File lib/hammer_cli/abstract.rb, line 152 def self.logger(name=self) logger = Logging.logger[name] logger.extend(HammerCLI::Logger::Watch) if not logger.respond_to? :watch logger end
# File lib/hammer_cli/abstract.rb, line 209 def self.option(switches, type, description, opts = {}, &block) formatter = opts.delete(:format) context_target = opts.delete(:context_target) HammerCLI::Options::OptionDefinition.new(switches, type, description, opts).tap do |option| declared_options << option option.value_formatter = formatter option.context_target = context_target block ||= option.default_conversion_block define_accessors_for(option, &block) end end
# File lib/hammer_cli/abstract.rb, line 51 def exception_handler @exception_handler ||= exception_handler_class.new(:output => output) end
# File lib/hammer_cli/abstract.rb, line 39 def execute HammerCLI::EX_OK end
# File lib/hammer_cli/abstract.rb, line 99 def help self.class.help(invocation_path, SortedBuilder.new) end
# File lib/hammer_cli/abstract.rb, line 133 def interactive? HammerCLI.interactive? end
# File lib/hammer_cli/abstract.rb, line 110 def output @output ||= HammerCLI::Output::Output.new(context, :default_adapter => adapter) end
# File lib/hammer_cli/abstract.rb, line 114 def output_definition self.class.output_definition end
# File lib/hammer_cli/abstract.rb, line 61 def parent_command context[:path][-2] end
# File lib/hammer_cli/abstract.rb, line 29 def parse(arguments) super validate_options safe_options = options.dup safe_options.keys.each { |k| safe_options[k] = '***' if k.end_with?('password') } logger.info "Called with options: %s" % safe_options.inspect rescue HammerCLI::Validator::ValidationError => e signal_usage_error e.message end
# File lib/hammer_cli/abstract.rb, line 224 def all_options self.class.recognised_options.inject({}) do |h, opt| h[opt.attribute_name] = send(opt.read_method) h end end
# File lib/hammer_cli/abstract.rb, line 171 def exception_handler_class #search for exception handler class in parent modules/classes module_list = self.class.name.to_s.split('::').inject([Object]) do |mod, class_name| mod << mod[-1].const_get(class_name) end module_list.reverse.each do |mod| return mod.send(:exception_handler_class) if mod.respond_to? :exception_handler_class end return HammerCLI::ExceptionHandler end
# File lib/hammer_cli/abstract.rb, line 167 def handle_exception(e) exception_handler.handle_exception(e) end
# File lib/hammer_cli/abstract.rb, line 158 def logger(name=self.class) self.class.logger(name) end
# File lib/hammer_cli/abstract.rb, line 231 def options all_options.reject {|key, value| value.nil? } end
# File lib/hammer_cli/abstract.rb, line 144 def print_collection(definition, collection) output.print_collection(definition, collection) end
# File lib/hammer_cli/abstract.rb, line 148 def print_message(msg, msg_params={}) output.print_message(msg, msg_params) end
Generated with the Darkfish Rdoc Generator 2.