diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-07-06 22:22:10 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-07-06 22:22:10 +0000 |
commit | aa741354a75c0d3b4f4b7f37a736a0154d45234c (patch) | |
tree | f048ad40c86425eabe76fccd07345f1cc63b9fa8 /lib/puppet/modules.rb | |
parent | d0680c8ed3f1e0df864c25a3f21e73383095629b (diff) | |
download | puppet-aa741354a75c0d3b4f4b7f37a736a0154d45234c.tar.gz puppet-aa741354a75c0d3b4f4b7f37a736a0154d45234c.tar.xz puppet-aa741354a75c0d3b4f4b7f37a736a0154d45234c.zip |
Fixing #596 -- classes in modules now autoload
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2655 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet/modules.rb')
-rw-r--r-- | lib/puppet/modules.rb | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/lib/puppet/modules.rb b/lib/puppet/modules.rb deleted file mode 100644 index aa2f75d03..000000000 --- a/lib/puppet/modules.rb +++ /dev/null @@ -1,113 +0,0 @@ -# Support for modules -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 - def self.modulepath - dirs = Puppet[:modulepath].split(":") - if ENV["PUPPETLIB"] - dirs = ENV["PUPPETLIB"].split(":") + dirs - end - dirs.select do |p| - p =~ /^#{File::SEPARATOR}/ && File::directory?(p) - end - end - - # Find and return the +module+ that +path+ belongs to. If +path+ is - # absolute, or if there is no module whose name is the first component - # of +path+, return +nil+ - def self.find(path) - if path =~ %r/^#{File::SEPARATOR}/ - return nil - end - - modname, rest = path.split(File::SEPARATOR, 2) - return nil if modname.nil? || modname.empty? - - modpath = modulepath.collect { |p| - File::join(p, modname) - }.find { |f| File::directory?(f) } - return nil unless modpath - - return self.new(modname, modpath) - end - - # Instance methods - - # 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 - def self.find_template(file) - if file =~ /^#{File::SEPARATOR}/ - return file - end - - mod = find(file) - if mod - return mod.template(file) - else - return File.join(Puppet[:templatedir], file) - end - end - - # 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+ - def self.find_manifests(pat, cwd = nil) - cwd ||= Dir.getwd - mod = find(pat) - if mod - return mod.manifests(pat) - else - abspat = File::expand_path(pat, cwd) - files = Dir.glob(abspat).reject { |f| FileTest.directory?(f) } - if files.size == 0 - files = Dir.glob(abspat + ".pp").reject { |f| FileTest.directory?(f) } - end - return files - end - end - - attr_reader :name, :path - def initialize(name, path) - @name = name - @path = path - end - - def strip(file) - n, rest = file.split(File::SEPARATOR, 2) - rest = nil if rest && rest.empty? - return rest - end - - def template(file) - return File::join(path, TEMPLATES, strip(file)) - end - - def files - return File::join(path, FILES) - end - - def manifests(pat) - rest = strip(pat) - rest ||= "init.pp" - p = File::join(path, MANIFESTS, rest) - files = Dir.glob(p) - if files.size == 0 - files = Dir.glob(p + ".pp") - end - return files - end - - private :initialize -end |