summaryrefslogtreecommitdiffstats
path: root/lib/puppet/module.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/module.rb')
-rw-r--r--lib/puppet/module.rb17
1 files changed, 16 insertions, 1 deletions
diff --git a/lib/puppet/module.rb b/lib/puppet/module.rb
index 45860c74d..54212710d 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
@@ -35,6 +35,21 @@ class Puppet::Module
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,