class HammerCLIForeman::DependentSearchablesOptionBuilder
Attributes
resource[R]
Public Class Methods
new(resource, searchables)
click to toggle source
# File lib/hammer_cli_foreman/option_builders.rb, line 184 def initialize(resource, searchables) @resource = resource @searchables = searchables end
Public Instance Methods
build(builder_params={})
click to toggle source
# File lib/hammer_cli_foreman/option_builders.rb, line 191 def build(builder_params={}) resource_name_map = builder_params[:resource_mapping] || {} dependent_options(@resource, resource_name_map) end
Protected Instance Methods
aliased(name, resource_name_map)
click to toggle source
# File lib/hammer_cli_foreman/option_builders.rb, line 243 def aliased(name, resource_name_map) resource_name_map[name.to_s] || resource_name_map[name.to_sym] || name end
dependent_options(resource, resource_name_map)
click to toggle source
# File lib/hammer_cli_foreman/option_builders.rb, line 198 def dependent_options(resource, resource_name_map) options = [] searchables = @searchables.for(resource) resource_name = resource.singular_name aliased_name = aliased(resource_name, resource_name_map) unless searchables.empty? first = searchables[0] remaining = searchables[1..-1] || [] # First option is named by the resource # Eg. --organization with accessor option_organization_name options << option( optionamize("--#{aliased_name}"), "#{aliased_name}_#{first.name}".upcase, first.description || " ", :attribute_name => HammerCLI.option_accessor_name("#{resource_name}_#{first.name}"), :referenced_resource => resource.singular_name ) # Other options are named by the resource plus the searchable name # Eg. --organization-label with accessor option_organization_label remaining.each do |s| options << option( optionamize("--#{aliased_name}-#{s.name}"), "#{aliased_name}_#{s.name}".upcase, s.description || " ", :attribute_name => HammerCLI.option_accessor_name("#{resource_name}_#{s.name}"), :referenced_resource => resource.singular_name, :format => s.format ) end end options << option( optionamize("--#{aliased_name}-id"), "#{aliased_name}_id".upcase, description("id", :show), :attribute_name => HammerCLI.option_accessor_name("#{resource_name}_id"), :format => HammerCLI::Options::Normalizers::Number.new, :referenced_resource => resource.singular_name ) options end