class HammerCLIForeman::ForemanOptionBuilder
Public Class Methods
new(searchables)
click to toggle source
# File lib/hammer_cli_foreman/option_builders.rb, line 95 def initialize(searchables) @searchables = searchables end
Public Instance Methods
build(builder_params={})
click to toggle source
Calls superclass method
# File lib/hammer_cli_foreman/option_builders.rb, line 99 def build(builder_params={}) expansion_options = builder_params[:expand] || {} allowed_resources = expansion_options[:only] || default_dependent_resources allowed_resources -= expansion_options[:except] || [] allowed_resources += expansion_options[:including] || [] allowed_resources.uniq! primary_resource = expansion_options[:primary] to_remove = default_dependent_resources - allowed_resources to_add = allowed_resources - default_dependent_resources builders.reject! do |b| b.class <= DependentSearchablesOptionBuilder && to_remove.include?(b.resource.name) end to_add.each do |resource_name| builders << DependentSearchablesOptionBuilder.new(HammerCLIForeman.foreman_resource(resource_name), @searchables) end if !primary_resource.nil? builders.reject! do |b| b.class <= SearchablesOptionBuilder end builders << SearchablesOptionBuilder.new(HammerCLIForeman.foreman_resource(primary_resource), @searchables) if primary_resource != false end super end
default_dependent_resources()
click to toggle source
# File lib/hammer_cli_foreman/option_builders.rb, line 129 def default_dependent_resources dependent_searchable_builders.map(&:resource).map(&:name) end
dependent_searchable_builders()
click to toggle source
# File lib/hammer_cli_foreman/option_builders.rb, line 133 def dependent_searchable_builders self.builders.select{|b| b.class <= DependentSearchablesOptionBuilder } end