Class: Chef::Cookbook::FileSystemFileVendor
- Inherits:
-
FileVendor
- Object
- FileVendor
- Chef::Cookbook::FileSystemFileVendor
- Defined in:
- lib/chef/cookbook/file_system_file_vendor.rb
Overview
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 non-sensical.
Instance Method Summary collapse
-
#get_filename(filename) ⇒ Object
Implements abstract base’s requirement.
-
#initialize(manifest) ⇒ FileSystemFileVendor
constructor
A new instance of FileSystemFileVendor.
Methods inherited from FileVendor
create_from_manifest, on_create
Constructor Details
#initialize(manifest) ⇒ FileSystemFileVendor
Returns a new instance of FileSystemFileVendor.
34 35 36 |
# File 'lib/chef/cookbook/file_system_file_vendor.rb', line 34 def initialize(manifest) @cookbook_name = manifest[:cookbook_name] end |
Instance Method Details
#get_filename(filename) ⇒ Object
Implements abstract base’s requirement. It looks in the Chef::Config.cookbook_path file hierarchy for the requested file.
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/chef/cookbook/file_system_file_vendor.rb', line 41 def get_filename(filename) location = Array(Chef::Config.cookbook_path).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 |