FileVendor
This FileVendor loads files from Chef::Config.cookbook_path. The thing that's sort of janky about this FileVendor implementation is that it basically takes only the cookbook's name from the manifest and throws the rest away then re-builds the list of files on the disk. This is due to the manifest not having the on-disk file locations, since in the chef-client case, that information is non-sensical.
# File lib/chef/cookbook/file_system_file_vendor.rb, line 34 def initialize(manifest, *repo_paths) @cookbook_name = manifest[:cookbook_name] @repo_paths = repo_paths.flatten raise ArgumentError, "You must specify at least one repo path" if @repo_paths.empty? end
Implements abstract base's requirement. It looks in the Chef::Config.cookbook_path file hierarchy for the requested file.
# File lib/chef/cookbook/file_system_file_vendor.rb, line 43 def get_filename(filename) location = @repo_paths.inject(nil) do |memo, basepath| candidate_location = File.join(basepath, @cookbook_name, filename) memo = candidate_location if File.exist?(candidate_location) memo end raise "File #{filename} does not exist for cookbook #{@cookbook_name}" unless location location end
Generated with the Darkfish Rdoc Generator 2.