Class: Puppet::Pops::Loader::ModuleLoaders::FileBased Private

Inherits:
AbstractPathBasedModuleLoader show all
Defined in:
lib/puppet/pops/loader/module_loaders.rb

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Direct Known Subclasses

GemBased

Constant Summary

Constants inherited from Loader

Loader::LOADABLE_KINDS

Instance Attribute Summary collapse

Attributes inherited from AbstractPathBasedModuleLoader

#module_name, #path, #private_loader

Attributes inherited from BaseLoader

#parent

Attributes inherited from Loader

#loader_name

Instance Method Summary collapse

Methods inherited from AbstractPathBasedModuleLoader

#find, #get_source_ref, #global?, #loadables

Methods inherited from BaseLoader

#add_entry, #get_entry, #load_typed, #loaded_entry, #promote_entry, #remove_entry, #set_entry

Methods inherited from Loader

#[], #find, #get_entry, #inspect, #load, #load_typed, #loadables, #loaded_entry, #parent, #private_loader, #set_entry

Constructor Details

#initialize(parent_loader, loaders, module_name, path, loader_name, loadables = LOADABLE_KINDS) ⇒ FileBased

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Create a kind of ModuleLoader for one module (Puppet Module, or module like)

Parameters:

  • parent_loader (Loader)

    typically the loader for the environment or root

  • module_name (String)

    the name of the module (non qualified name), may be nil for “modules” only containing globals

  • path (String)

    the path to the root of the module (semantics defined by subclass)

  • loader_name (String)

    a name that identifies the loader



289
290
291
292
# File 'lib/puppet/pops/loader/module_loaders.rb', line 289

def initialize(parent_loader, loaders, module_name, path, loader_name, loadables = LOADABLE_KINDS)
  super
  @path_index = Set.new()
end

Instance Attribute Details

#path_indexObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



280
281
282
# File 'lib/puppet/pops/loader/module_loaders.rb', line 280

def path_index
  @path_index
end

#smart_pathsObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



279
280
281
# File 'lib/puppet/pops/loader/module_loaders.rb', line 279

def smart_paths
  @smart_paths
end

Instance Method Details

#add_to_index(smart_path) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



307
308
309
310
311
# File 'lib/puppet/pops/loader/module_loaders.rb', line 307

def add_to_index(smart_path)
  found = Dir.glob(File.join(smart_path.generic_path, '**', "*#{smart_path.extension}"))
  @path_index.merge(found)
  found
end

#existing_path(effective_path) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



294
295
296
297
# File 'lib/puppet/pops/loader/module_loaders.rb', line 294

def existing_path(effective_path)
  # Optimized, checks index instead of visiting file system
  @path_index.include?(effective_path) ? effective_path : nil
end

#get_contents(effective_path) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



313
314
315
# File 'lib/puppet/pops/loader/module_loaders.rb', line 313

def get_contents(effective_path)
  Puppet::FileSystem.read(effective_path, :encoding => 'utf-8')
end

#meaningful_to_search?(smart_path) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


299
300
301
# File 'lib/puppet/pops/loader/module_loaders.rb', line 299

def meaningful_to_search?(smart_path)
  ! add_to_index(smart_path).empty?
end

#to_sObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



303
304
305
# File 'lib/puppet/pops/loader/module_loaders.rb', line 303

def to_s()
  "(ModuleLoader::FileBased '#{loader_name()}' '#{module_name()}')"
end