class Puppet::Plugins

Constants

Loaded
Paths

Attributes

name[R]
path[R]

Public Class Methods

known() click to toggle source

Return all the Puppet::Plugins we know about, searching any new paths

# File lib/puppet/util/plugins.rb, line 37
def self.known
  Paths[Loaded.length...Paths.length].each { |path|
    file = File.join(path,'plugin_init.rb')
    Loaded << (File.exist?(file) && new(file))
  }
  Loaded.compact
end
look_in(*paths) click to toggle source

Add more places to look for plugins without adding duplicates or changing the

order of ones we've already found.
# File lib/puppet/util/plugins.rb, line 48
def self.look_in(*paths)
  Paths.replace Paths | paths.flatten.collect { |path| File.expand_path(path) }
end
method_missing(hook,*args,&block) click to toggle source

Calling methods (hooks) on the class calls the method of the same name on

all plugins that use that hook, passing in the same arguments to each
and returning an array containing the results returned by each plugin as
an array of [plugin_name,result] pairs.
# File lib/puppet/util/plugins.rb, line 61
def self.method_missing(hook,*args,&block)
  known.
    select  { |p| p.respond_to? hook }.
    collect { |p| [p.name,p.send(hook,*args,&block)] }
end
new(path) click to toggle source
# File lib/puppet/util/plugins.rb, line 70
def initialize(path)
  @name = @path = path
  class << self
    private
    def define_hooks
      eval File.read(path),nil,path,1
    end
  end
  define_hooks
end