summaryrefslogtreecommitdiffstats
path: root/lib/puppet/module.rb
diff options
context:
space:
mode:
authorDavid Schmitt <david@schmitt.edv-bus.at>2007-11-08 21:02:56 +0100
committerDavid Schmitt <david@schmitt.edv-bus.at>2007-11-08 21:02:56 +0100
commit44410525722d4de0ed416f42c7d094d42f6602a6 (patch)
tree3043441d00b7f67a29bba8234c07d0c14662d8c2 /lib/puppet/module.rb
parentdfe774f55e98db085d8f5729a4b1229513c6c2b0 (diff)
downloadpuppet-44410525722d4de0ed416f42c7d094d42f6602a6.tar.gz
puppet-44410525722d4de0ed416f42c7d094d42f6602a6.tar.xz
puppet-44410525722d4de0ed416f42c7d094d42f6602a6.zip
fix #891: create a plugins mount which collects all modules' plugins/ subdirs
This is Matthew Palmer's work, from his debian package at http://theshed.hezmatt.org/mattshacks/puppet/_patches/load_plugins_from_modules/20070831054902-6856b-0fd1481621def5d0c4d1ae48fb2f1dc357767c1e.patch I just wriggled a few hunks so they apply.
Diffstat (limited to 'lib/puppet/module.rb')
-rw-r--r--lib/puppet/module.rb21
1 files changed, 17 insertions, 4 deletions
diff --git a/lib/puppet/module.rb b/lib/puppet/module.rb
index 45860c74d..3ff4fa470 100644
--- a/lib/puppet/module.rb
+++ b/lib/puppet/module.rb
@@ -4,7 +4,7 @@ class Puppet::Module
TEMPLATES = "templates"
FILES = "files"
MANIFESTS = "manifests"
-
+
# Return an array of paths by splitting the +modulepath+ config
# parameter. Only consider paths that are absolute and existing
# directories
@@ -27,14 +27,27 @@ class Puppet::Module
return nil
end
- modpath = modulepath(environment).collect { |path|
- File::join(path, modname)
- }.find { |f| File::directory?(f) }
+ modpath = all(environment).find { |f| File::directory?(f) }
return nil unless modpath
return self.new(modname, modpath)
end
+ # Return an array of the full path of every subdirectory in each
+ # directory in the modulepath.
+ def self.all(environment = nil)
+ modulepath(environment).map do |mp|
+ Dir.new(mp).map do |modfile|
+ modpath = File.join(mp, modfile)
+ unless modfile == '.' or modfile == '..' or !File.directory?(modpath)
+ modpath
+ else
+ nil
+ end
+ end
+ end.flatten.compact
+ end
+
# Instance methods
# Find the concrete file denoted by +file+. If +file+ is absolute,