class HammerCLIForeman::UpdateDependentSearchablesOptionBuilder
Protected Instance Methods
dependent_options(resource, resource_name_map, command)
click to toggle source
# File lib/hammer_cli_foreman/option_builders.rb, line 303 def dependent_options(resource, resource_name_map, command) options = [] searchables = @searchables.for(resource) resource_name = resource.singular_name aliased_name = aliased(resource_name, resource_name_map) # Those options are not coming from API docs, thus create a new family only family = HammerCLI::Options::OptionFamily.new( prefix: 'new-', aliased_resource: aliased_name, referenced_resource: resource_name, creator: command ) options << family.parent( optionamize("--new-#{aliased_name}-id"), "new_#{aliased_name}_id".upcase, _('Use to update associated %s') % aliased_name, attribute_name: HammerCLI.option_accessor_name("new_#{resource_name}_id"), format: HammerCLI::Options::Normalizers::Number.new ) unless searchables.empty? first = searchables[0] remaining = searchables[1..-1] || [] # First option is named by the resource # Eg. --new-organization with accessor option_new_organization_name options << family.child( optionamize("--new-#{aliased_name}"), "new_#{aliased_name}_#{first.name}".upcase, _('Use to update associated %s') % aliased_name, attribute_name: HammerCLI.option_accessor_name("new_#{resource_name}_#{first.name}") ) # Other options are named by the resource plus the searchable name # Eg. --new-organization-label with accessor option_new_organization_label remaining.each do |s| options << family.child( optionamize("--new-#{aliased_name}-#{s.name}"), "new_#{aliased_name}_#{s.name}".upcase, _('Use to update associated %s') % aliased_name, attribute_name: HammerCLI.option_accessor_name("new_#{resource_name}_#{s.name}") ) end end options end