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) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 189
def self.extend_before_print(data)
  return if @before_print_block.nil?

  @before_print_block.call(data)
  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 203
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_sources(sources, command = nil) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 231
def self.extend_option_sources(sources, command = nil)
  return if @option_sources_block.nil?

  @option_sources_block.call(sources, command)
  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 170
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) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 196
def self.extend_output(command_class)
  return if @output_extension_block.nil?

  @output_extension_block.call(command_class.output_definition)
  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 184
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) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 210
def self.extend_request_headers(headers)
  return if @request_headers_block.nil?

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

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

  @request_params_block.call(params)
  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_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

delegatee(command_class) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 154
def delegatee(command_class)
  self.class.delegatee = command_class
end
details() click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 158
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 105
def extend_before_print(data)
  allowed = @only & %i[before_print data]
  return if allowed.empty? || (allowed & @except).any?

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

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

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

Object

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

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

  self.class.extend_output(command_class)
end
extend_predefined_options(command_class) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 98
def extend_predefined_options(command_class)
  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 126
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)
end
extend_request_options(options) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 133
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)
end
extend_request_params(params) click to toggle source
# File lib/hammer_cli/command_extensions.rb, line 140
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)
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