class HammerCLIForeman::ForemanOptionBuilder

Public Class Methods

new(searchables) click to toggle source
# File lib/hammer_cli_foreman/option_builders.rb, line 105
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 109
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 139
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 143
def dependent_searchable_builders
  self.builders.select{|b| b.class <= DependentSearchablesOptionBuilder }
end