class Chef::Cookbook::FileSystemFileVendor
Chef::Cookbook::FileSystemFileVendor
¶ ↑
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 nonsensical.
Attributes
Public Class Methods
Source
# File lib/chef/cookbook/file_system_file_vendor.rb, line 36 def initialize(manifest, *repo_paths) @cookbook_name = manifest.name @repo_paths = repo_paths.flatten raise ArgumentError, "You must specify at least one repo path" if repo_paths.empty? end
Public Instance Methods
Source
# File lib/chef/cookbook/file_system_file_vendor.rb, line 42 def cookbooks @cookbooks ||= Chef::CookbookLoader.new(repo_paths).load_cookbooks end
Source
# File lib/chef/cookbook/file_system_file_vendor.rb, line 49 def get_filename(filename) location = File.join(cookbooks[cookbook_name].root_dir, filename) if cookbooks.key?(cookbook_name) raise "File #{filename} does not exist for cookbook #{cookbook_name}" unless location && File.exist?(location) location end
Implements abstract base’s requirement. It looks in the Chef::Config.cookbook_path file hierarchy for the requested file.