summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorBrice Figureau <brice-puppet@daysofwonder.com>2009-11-11 22:47:42 +0100
committerJames Turnbull <james@lovedthanlost.net>2009-11-15 10:06:02 +1100
commit56486664f25f495182dd3e3708e760d4220b1199 (patch)
treef72cd18c9aef096c8c81b31522d0a2225bb11f14 /lib
parent74a877e43d2113c5f60b08d998972e0722e63194 (diff)
downloadpuppet-56486664f25f495182dd3e3708e760d4220b1199.tar.gz
puppet-56486664f25f495182dd3e3708e760d4220b1199.tar.xz
puppet-56486664f25f495182dd3e3708e760d4220b1199.zip
Add Environment#manifestdir and small refactoring
This adds a new environment cached attribute: manifestdir. It is modeled on the code of modulepath, but returns the manifestdir. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/puppet/node/environment.rb29
1 files changed, 20 insertions, 9 deletions
diff --git a/lib/puppet/node/environment.rb b/lib/puppet/node/environment.rb
index 133f22c77..94f899200 100644
--- a/lib/puppet/node/environment.rb
+++ b/lib/puppet/node/environment.rb
@@ -55,15 +55,7 @@ class Puppet::Node::Environment
if ENV["PUPPETLIB"]
dirs = ENV["PUPPETLIB"].split(File::PATH_SEPARATOR) + dirs
end
- dirs.collect do |dir|
- if dir !~ /^#{File::SEPARATOR}/
- File.join(Dir.getwd, dir)
- else
- dir
- end
- end.find_all do |p|
- p =~ /^#{File::SEPARATOR}/ && FileTest.directory?(p)
- end
+ validate_dirs(dirs)
end
# Return all modules from this environment.
@@ -73,7 +65,26 @@ class Puppet::Node::Environment
module_names.collect { |path| Puppet::Module.new(path, self) rescue nil }.compact
end
+ # Cache the manifestdir, so that we aren't searching through
+ # all known directories all the time.
+ cached_attr(:manifestdir, :ttl => Puppet[:filetimeout]) do
+ validate_dirs(self[:manifestdir].split(File::PATH_SEPARATOR))
+ end
+
def to_s
name.to_s
end
+
+ def validate_dirs(dirs)
+ dirs.collect do |dir|
+ if dir !~ /^#{File::SEPARATOR}/
+ File.join(Dir.getwd, dir)
+ else
+ dir
+ end
+ end.find_all do |p|
+ p =~ /^#{File::SEPARATOR}/ && FileTest.directory?(p)
+ end
+ end
+
end