Parent

Included Modules

Class/Module Index [+]

Quicksearch

Chef::CookbookLoader

Attributes

cookbook_paths[R]
cookbooks_by_name[R]
merged_cookbooks[R]
metadata[RW]

Public Class Methods

new(*repo_paths) click to toggle source
# File lib/chef/cookbook_loader.rb, line 38
def initialize(*repo_paths)
  @repo_paths = repo_paths.flatten
  raise ArgumentError, "You must specify at least one cookbook repo path" if @repo_paths.empty?
  @cookbooks_by_name = Mash.new
  @loaded_cookbooks = {}
  @metadata = Mash.new
  @cookbooks_paths = Hash.new {|h,k| h[k] = []} # for deprecation warnings

  # Used to track which cookbooks appear in multiple places in the cookbook repos
  # and are merged in to a single cookbook by file shadowing. This behavior is
  # deprecated, so users of this class may issue warnings to the user by checking
  # this variable
  @merged_cookbooks = []

  load_cookbooks
end

Public Instance Methods

[](cookbook) click to toggle source
# File lib/chef/cookbook_loader.rb, line 89
def [](cookbook)
  if @cookbooks_by_name.has_key?(cookbook.to_sym)
    @cookbooks_by_name[cookbook.to_sym]
  else
    raise Exceptions::CookbookNotFoundInRepo, "Cannot find a cookbook named #{cookbook.to_s}; did you forget to add metadata to a cookbook? (http://wiki.opscode.com/display/chef/Metadata)"
  end
end
Also aliased as: fetch
cookbook_exists?(cookbook_name) click to toggle source
Alias for: has_key?
cookbook_names() click to toggle source
# File lib/chef/cookbook_loader.rb, line 111
def cookbook_names
  @cookbooks_by_name.keys.sort
end
cookbooks() click to toggle source
Alias for: values
each() click to toggle source
# File lib/chef/cookbook_loader.rb, line 105
def each
  @cookbooks_by_name.keys.sort { |a,b| a.to_s <=> b.to_s }.each do |cname|
    yield(cname, @cookbooks_by_name[cname])
  end
end
fetch(cookbook) click to toggle source
Alias for: []
has_key?(cookbook_name) click to toggle source
# File lib/chef/cookbook_loader.rb, line 99
def has_key?(cookbook_name)
  @cookbooks_by_name.has_key?(cookbook_name)
end
Also aliased as: cookbook_exists?, key?
key?(cookbook_name) click to toggle source
Alias for: has_key?
load_cookbooks() click to toggle source
# File lib/chef/cookbook_loader.rb, line 61
def load_cookbooks
  cookbook_settings = Hash.new
  @repo_paths.each do |repo_path|
    repo_path = File.expand_path(repo_path)
    chefignore = Cookbook::Chefignore.new(repo_path)
    Dir[File.join(repo_path, "*")].each do |cookbook_path|
      next unless File.directory?(cookbook_path)
      loader = Cookbook::CookbookVersionLoader.new(cookbook_path, chefignore)
      loader.load_cookbooks
      next if loader.empty?
      @cookbooks_paths[loader.cookbook_name] << cookbook_path # for deprecation warnings
      if @loaded_cookbooks.key?(loader.cookbook_name)
        @merged_cookbooks << loader.cookbook_name # for deprecation warnings
        @loaded_cookbooks[loader.cookbook_name].merge!(loader)
      else
        @loaded_cookbooks[loader.cookbook_name] = loader
      end
    end
  end

  @loaded_cookbooks.each do |cookbook, loader|
    cookbook_version = loader.cookbook_version
    @cookbooks_by_name[cookbook] = cookbook_version
    @metadata[cookbook] = cookbook_version.metadata
  end
  @cookbooks_by_name
end
merged_cookbook_paths() click to toggle source
# File lib/chef/cookbook_loader.rb, line 55
def merged_cookbook_paths # for deprecation warnings
  merged_cookbook_paths = {}
  @merged_cookbooks.each {|c| merged_cookbook_paths[c] = @cookbooks_paths[c]}
  merged_cookbook_paths
end
values() click to toggle source
# File lib/chef/cookbook_loader.rb, line 115
def values
  @cookbooks_by_name.values
end
Also aliased as: cookbooks

[Validate]

Generated with the Darkfish Rdoc Generator 2.