class HammerCLIForeman::SearchablesOptionBuilder

Attributes

resource[R]

Public Class Methods

new(resource, searchables) click to toggle source
# File lib/hammer_cli_foreman/option_builders.rb, line 165
def initialize(resource, searchables)
  @resource = resource
  @searchables = searchables
end

Public Instance Methods

aliased_name(name, resource_name_map) click to toggle source
# File lib/hammer_cli_foreman/option_builders.rb, line 185
def aliased_name(name, resource_name_map)
  return if name.nil?

  resource_name_map[name.to_s] || resource_name_map[name.to_sym] || name
end
build(builder_params={}) click to toggle source
# File lib/hammer_cli_foreman/option_builders.rb, line 172
def build(builder_params={})
  resource_name_map = builder_params[:resource_mapping] || {}
  @searchables.for(@resource).collect do |s|
    option(
      optionamize("--#{s.name}"),
      s.name.upcase,
      s.description,
      referenced_resource: @resource.singular_name,
      aliased_resource: aliased_name(resource_name(s.name), resource_name_map)
    )
  end
end
resource_name(param) click to toggle source
# File lib/hammer_cli_foreman/option_builders.rb, line 191
def resource_name(param)
  if param =~ /^id[s]?$/
    @resource.singular_name
  elsif param =~ /_id[s]?$/
    param.gsub(/_id[s]?$/, '')
  else
    nil
  end
end