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


386
387
388
389
# File 'lib/puppet/pops/loader/loader_paths.rb', line 386

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.


397
398
399
400
401
402
403
404
405
406
407
408
409
# File 'lib/puppet/pops/loader/loader_paths.rb', line 397

def effective_paths(type)
  smart_paths = @smart_paths
  loader = @loader
  effective_paths = smart_paths[type]
  unless effective_paths
    # type not yet processed, does the various directories for the type exist ?
    # Get the relative dirs for the type
    paths_for_type = 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