Class/Module Index [+]

Quicksearch

HammerCLI::Apipie::OptionBuilder

Attributes

require_options[W]

Public Class Methods

new(action, options={}) click to toggle source
# File lib/hammer_cli/apipie/option_builder.rb, line 6
def initialize(action, options={})
  @action = action
  @require_options = options[:require_options].nil? ? true : options[:require_options]
end

Public Instance Methods

build(builder_params={}) click to toggle source
# File lib/hammer_cli/apipie/option_builder.rb, line 11
def build(builder_params={})
  filter = Array(builder_params[:without])
  resource_name_map = builder_params[:resource_mapping] || {}

  options_for_params(@action.params, filter, resource_name_map)
end
require_options?() click to toggle source
# File lib/hammer_cli/apipie/option_builder.rb, line 19
def require_options?
  @require_options
end

Protected Instance Methods

aliased(name, resource_name_map) click to toggle source
# File lib/hammer_cli/apipie/option_builder.rb, line 69
def aliased(name, resource_name_map)
  resource_name = name.gsub(/_id[s]?$/, "")
  resource_name = resource_name_map[resource_name.to_s] || resource_name_map[resource_name.to_sym] || resource_name
  if name.end_with?("_id")
    return "#{resource_name}_id"
  elsif name.end_with?("_ids")
    return "#{resource_name}_ids"
  else
    return name
  end
end
create_option(param, resource_name_map) click to toggle source
# File lib/hammer_cli/apipie/option_builder.rb, line 38
def create_option(param, resource_name_map)
  option(
    option_switch(param, resource_name_map),
    option_type(param, resource_name_map),
    option_desc(param),
    option_opts(param)
  )
end
option_desc(param) click to toggle source
# File lib/hammer_cli/apipie/option_builder.rb, line 55
def option_desc(param)
  param.description || " "
end
option_opts(param) click to toggle source
# File lib/hammer_cli/apipie/option_builder.rb, line 59
def option_opts(param)
  opts = {}
  opts[:required] = true if (param.required? and require_options?)
  if param.expected_type == :array || param.validator =~ /Array/
    opts[:format] = HammerCLI::Options::Normalizers::List.new
  end
  opts[:attribute_name] = HammerCLI.option_accessor_name(param.name)
  return opts
end
option_switch(param, resource_name_map) click to toggle source
# File lib/hammer_cli/apipie/option_builder.rb, line 47
def option_switch(param, resource_name_map)
  '--' + optionamize(aliased(param.name, resource_name_map))
end
option_type(param, resource_name_map) click to toggle source
# File lib/hammer_cli/apipie/option_builder.rb, line 51
def option_type(param, resource_name_map)
  aliased(param.name, resource_name_map).upcase.gsub('-', '_')
end
options_for_params(params, filter, resource_name_map) click to toggle source
# File lib/hammer_cli/apipie/option_builder.rb, line 25
def options_for_params(params, filter, resource_name_map)
  opts = []
  params.each do |p|
    next if filter.include?(p.name) || filter.include?(p.name.to_sym)
    if p.expected_type == :hash
      opts += options_for_params(p.params, filter, resource_name_map)
    else
      opts << create_option(p, resource_name_map)
    end
  end
  opts
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.