Module: Puppet::Parser::Files
- Defined in:
- lib/vendor/puppet/parser/files.rb
Overview
This is a silly central module for finding different kinds of files while parsing. This code doesn’t really belong in the Puppet::Module class, but it doesn’t really belong anywhere else, either.
Class Method Summary collapse
-
.find_manifests(start, options = {}) ⇒ Object
Return a list of manifests (as absolute filenames) that match
pat
with the current directory set tocwd
. -
.find_template(template, environment = nil) ⇒ Object
Find the concrete file denoted by
file
. - .find_template_in_module(template, environment = nil) ⇒ Object
-
.split_file_path(path) ⇒ Object
Split the path into the module and the rest of the path, or return nil if the path is empty or absolute (starts with a /).
-
.templatepath(environment = nil) ⇒ Object
Return an array of paths by splitting the
templatedir
config parameter.
Class Method Details
.find_manifests(start, options = {}) ⇒ Object
Return a list of manifests (as absolute filenames) that match pat
with the current directory set to cwd
. If the first component of pat
does not contain any wildcards and is an existing module, return a list of manifests in that module matching the rest of pat
Otherwise, try to find manifests matching pat
relative to cwd
16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/vendor/puppet/parser/files.rb', line 16 def find_manifests(start, = {}) cwd = [:cwd] || Dir.getwd module_name, pattern = split_file_path(start) begin if mod = Puppet::Module.find(module_name, [:environment]) return [mod.name, mod.match_manifests(pattern)] end rescue Puppet::Module::InvalidName # Than that would be a "no." end abspat = File::(start, cwd) [nil, Dir.glob(abspat + (File.extname(abspat).empty? ? '{.pp,.rb}' : '' )).uniq.reject { |f| FileTest.directory?(f) }] end |
.find_template(template, environment = nil) ⇒ Object
Find the concrete file denoted by file
. If file
is absolute, return it directly. Otherwise try to find it as a template in a module. If that fails, return it relative to the templatedir
config param. In all cases, an absolute path is returned, which does not necessarily refer to an existing file
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/vendor/puppet/parser/files.rb', line 36 def find_template(template, environment = nil) if template == File.(template) return template end if template_paths = templatepath(environment) # If we can find the template in :templatedir, we return that. template_paths.collect { |path| File::join(path, template) }.each do |f| return f if FileTest.exist?(f) end end # check in the default template dir, if there is one if td_file = find_template_in_module(template, environment) return td_file end nil end |
.find_template_in_module(template, environment = nil) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/vendor/puppet/parser/files.rb', line 58 def find_template_in_module(template, environment = nil) path, file = split_file_path(template) # Because templates don't have an assumed template name, like manifests do, # we treat templates with no name as being templates in the main template # directory. return nil unless file if mod = Puppet::Module.find(path, environment) and t = mod.template(file) return t end nil end |
.split_file_path(path) ⇒ Object
Split the path into the module and the rest of the path, or return nil if the path is empty or absolute (starts with a /). This method can return nil & anyone calling it needs to handle that.
84 85 86 |
# File 'lib/vendor/puppet/parser/files.rb', line 84 def split_file_path(path) path.split(File::SEPARATOR, 2) unless path == "" or Puppet::Util.absolute_path?(path) end |
.templatepath(environment = nil) ⇒ Object
Return an array of paths by splitting the templatedir
config parameter.
74 75 76 77 78 79 |
# File 'lib/vendor/puppet/parser/files.rb', line 74 def templatepath(environment = nil) dirs = Puppet.settings.value(:templatedir, environment).split(File::PATH_SEPARATOR) dirs.select do |p| File::directory?(p) end end |