Class: Puppet::Pops::Loader::LoaderPaths::SmartPaths

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet/pops/loader/loader_paths.rb

Overview

SmartPaths

Holds effective SmartPath instances per type

Instance Method Summary collapse

Constructor Details

#initialize(path_based_loader) ⇒ SmartPaths

Returns a new instance of SmartPaths.



155
156
157
158
# File 'lib/puppet/pops/loader/loader_paths.rb', line 155

def initialize(path_based_loader)
  @loader = path_based_loader
  @smart_paths = {}
end

Instance Method Details

#effective_paths(type) ⇒ Array<SmartPath>

Ensures that the paths for the type have been probed and pruned to what is existing relative to the given root.



166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/puppet/pops/loader/loader_paths.rb', line 166

def effective_paths(type)
  smart_paths = @smart_paths
  loader = @loader
  unless effective_paths = smart_paths[type]
    # type not yet processed, does the various directories for the type exist ?
    # Get the relative dirs for the type
    paths_for_type = Puppet::Pops::Loader::LoaderPaths.relative_paths_for_type(type, loader)
    # Check which directories exist in the loader's content/index
    effective_paths = smart_paths[type] = paths_for_type.select { |sp| loader.meaningful_to_search?(sp) }
  end
  effective_paths
end