class HammerCLIForeman::ForemanOptionBuilder
Public Class Methods
new(searchables, action = nil)
click to toggle source
# File lib/hammer_cli_foreman/option_builders.rb, line 98 def initialize(searchables, action = nil) @searchables = searchables @action = action end
Public Instance Methods
build(builder_params={})
click to toggle source
Calls superclass method
# File lib/hammer_cli_foreman/option_builders.rb, line 103 def build(builder_params={}) expansion_options = builder_params[:expand] || {} except_default = @action&.params&.select { |p| !p.show? }&.map { |p| HammerCLIForeman.param_to_resource(p.name).name } || [] allowed_resources = expansion_options[:only] || default_dependent_resources allowed_resources -= expansion_options[:except] || except_default 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 134 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 138 def dependent_searchable_builders self.builders.select{|b| b.class <= DependentSearchablesOptionBuilder } end