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
cookbook_name[R]
repo_paths[R]
Public Class Methods
new(manifest, *repo_paths)
click to toggle 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
cookbooks()
click to toggle source
# File lib/chef/cookbook/file_system_file_vendor.rb, line 42 def cookbooks @cookbooks ||= Chef::CookbookLoader.new(repo_paths).load_cookbooks end
get_filename(filename)
click to toggle source
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 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