class HammerCLI::CommandExtensions

Constants

ALLOWED_EXTENSIONS

Attributes

delegatee[RW]

Public Class Methods

before_print(&block) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 61
def self.before_print(&block)
  @before_print_block = block
end
extend_before_print(data, command_object, command_class) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 212
def self.extend_before_print(data, command_object, command_class)
  return if @before_print_block.nil?

  @before_print_block.call(data, command_object, command_class)
  logger.debug("Called block for #{@delegatee} data:\n\t#{@before_print_block}")
end
extend_help(command_class) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 226
def self.extend_help(command_class)
  return if @help_extension_block.nil?

  command_class.help_extension_blocks << @help_extension_block
  logger.debug("Saved block for #{@delegatee} help definition:\n\t#{@help_extension_block}")
end
extend_option_family(command_class) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 261
def self.extend_option_family(command_class)
  return if @option_family_extensions.nil?

  @option_family_extensions.each do |extension|
    extension[:options][:creator] = command_class
    command_class.send(:option_family, extension[:options], &extension[:block])
    logger.debug("Called option family block for #{command_class}:\n\t#{extension[:block]}")
  end
end
extend_option_sources(sources, command_object, command_class) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 254
def self.extend_option_sources(sources, command_object, command_class)
  return if @option_sources_block.nil?

  @option_sources_block.call(sources, command_object, command_class)
  logger.debug("Called block for #{@delegatee} option sources:\n\t#{@option_sources_block}")
end
extend_options(command_class) click to toggle source

Class

# File lib/hammer_cli/command_extensions.rb, line 193
def self.extend_options(command_class)
  return if @options.nil?

  @options.each do |option|
    command_class.send(:option,
                       option[:switches],
                       option[:type],
                       option[:description],
                       option[:opts],
                       &option[:block])
    logger.debug("Added option for #{command_class}: #{option}")
  end
end
extend_output(command_class, command_object) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 219
def self.extend_output(command_class, command_object)
  return if @output_extension_block.nil?

  @output_extension_block.call(command_class.output_definition, command_object, command_class)
  logger.debug("Called block for #{@delegatee} output definition:\n\t#{@output_extension_block}")
end
extend_predefined_options(command_class) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 207
def self.extend_predefined_options(command_class)
  command_class.send(:use_option, *@predefined_option_names)
  logger.debug("Added predefined options for #{command_class}: #{@predefined_option_names}")
end
extend_request_headers(headers, command_object, command_class) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 233
def self.extend_request_headers(headers, command_object, command_class)
  return if @request_headers_block.nil?

  @request_headers_block.call(headers, command_object, command_class)
  logger.debug("Called block for #{@delegatee} request headers:\n\t#{@request_headers_block}")
end
extend_request_options(options, command_object, command_class) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 240
def self.extend_request_options(options, command_object, command_class)
  return if @request_options_block.nil?

  @request_options_block.call(options, command_object, command_class)
  logger.debug("Called block for #{@delegatee} request options:\n\t#{@request_options_block}")
end
extend_request_params(params, command_object, command_class) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 247
def self.extend_request_params(params, command_object, command_class)
  return if @request_params_block.nil?

  @request_params_block.call(params, command_object, command_class)
  logger.debug("Called block for #{@delegatee} request params:\n\t#{@request_params_block}")
end
help(&block) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 69
def self.help(&block)
  @help_extension_block = block
end
inheritable(boolean) click to toggle source

DSL

# File lib/hammer_cli/command_extensions.rb, line 45
def self.inheritable(boolean)
  @inheritable = boolean
end
inheritable?() click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 10
def inheritable?
  @inheritable
end
logger() click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 6
def logger
  Logging.logger[to_s]
end
method_missing(message, *args, &block) click to toggle source
Calls superclass method
# File lib/hammer_cli/command_extensions.rb, line 35
def self.method_missing(message, *args, &block)
  if @delegatee
    @delegatee.send(message, *args, &block)
  else
    super
  end
end
new(options = {}) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 21
def initialize(options = {})
  @only = options[:only] || ALLOWED_EXTENSIONS
  @only = [@only] unless @only.is_a?(Array)
  @except = options[:except] || []
  @except = [@except] unless @except.is_a?(Array)
  @inheritable = options[:inheritable]
end
option(switches, type, description, opts = {}, &block) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 49
def self.option(switches, type, description, opts = {}, &block)
  @options ||= []
  @options << { switches: switches,
                type: type,
                description: description,
                opts: opts, block: block }
end
option_family(options = {}, &block) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 89
def self.option_family(options = {}, &block)
  @option_family_extensions ||= []
  @option_family_extensions << {
    options: options,
    block: block
  }
end
option_sources(&block) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 85
def self.option_sources(&block)
  @option_sources_block = block
end
output(&block) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 65
def self.output(&block)
  @output_extension_block = block
end
request_headers(&block) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 73
def self.request_headers(&block)
  @request_headers_block = block
end
request_options(&block) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 77
def self.request_options(&block)
  @request_options_block = block
end
request_params(&block) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 81
def self.request_params(&block)
  @request_params_block = block
end
use_option(*names) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 57
def self.use_option(*names)
  @predefined_option_names = names
end

Public Instance Methods

command_class(command_class) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 173
def command_class(command_class)
  @command_class = command_class
end
command_object(command_object) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 177
def command_object(command_object)
  @command_object = command_object
end
delegatee(command_class) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 169
def delegatee(command_class)
  self.class.delegatee = command_class
end
details() click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 181
def details
  except = @except.empty? ? '*nothing*' : @except
  details = if @only == ALLOWED_EXTENSIONS
              "*all* except #{except}"
            else
              "#{@only} only"
            end
  "#{self.class} for #{details}"
end
extend_before_print(data) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 113
def extend_before_print(data)
  allowed = @only & %i[before_print data]
  return if allowed.empty? || (allowed & @except).any?

  self.class.extend_before_print(data, @command_object, @command_class)
end
extend_help() click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 127
def extend_help
  allowed = @only & %i[help]
  return if allowed.empty? || (allowed & @except).any?

  self.class.extend_help(@command_class)
end
extend_option_family() click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 162
def extend_option_family
  allowed = @only & %i[option_family]
  return if allowed.empty? || (allowed & @except).any?

  self.class.extend_option_family(@command_class)
end
extend_option_sources(sources) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 155
def extend_option_sources(sources)
  allowed = @only & %i[option_sources]
  return if allowed.empty? || (allowed & @except).any?

  self.class.extend_option_sources(sources, @command_object, @command_class)
end
extend_options() click to toggle source

Object

# File lib/hammer_cli/command_extensions.rb, line 99
def extend_options
  allowed = @only & %i[command_options option]
  return if allowed.empty? || (allowed & @except).any?

  self.class.extend_options(@command_class)
end
extend_output() click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 120
def extend_output
  allowed = @only & %i[output]
  return if allowed.empty? || (allowed & @except).any?

  self.class.extend_output(@command_class, @command_object)
end
extend_predefined_options() click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 106
def extend_predefined_options
  allowed = @only & %i[predefined_options use_option]
  return if allowed.empty? || (allowed & @except).any?

  self.class.extend_predefined_options(@command_class)
end
extend_request_headers(headers) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 134
def extend_request_headers(headers)
  allowed = @only & %i[request_headers headers request]
  return if allowed.empty? || (allowed & @except).any?

  self.class.extend_request_headers(headers, @command_object, @command_class)
end
extend_request_options(options) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 141
def extend_request_options(options)
  allowed = @only & %i[request_options options request]
  return if allowed.empty? || (allowed & @except).any?

  self.class.extend_request_options(options, @command_object, @command_class)
end
extend_request_params(params) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 148
def extend_request_params(params)
  allowed = @only & %i[request_params params request]
  return if allowed.empty? || (allowed & @except).any?

  self.class.extend_request_params(params, @command_object, @command_class)
end
inheritable?() click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 29
def inheritable?
  return @inheritable unless @inheritable.nil?

  self.class.inheritable? || false
end