# 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
# 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
# File lib/chef/cookbook_loader.rb, line 111 def cookbook_names @cookbooks_by_name.keys.sort end
# 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
# File lib/chef/cookbook_loader.rb, line 99 def has_key?(cookbook_name) @cookbooks_by_name.has_key?(cookbook_name) end
# 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
# 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
# File lib/chef/cookbook_loader.rb, line 115 def values @cookbooks_by_name.values end
Generated with the Darkfish Rdoc Generator 2.