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 nonsensical.
Instance Attribute Summary collapse
-
#cookbook_name ⇒ Object
readonly
Returns the value of attribute cookbook_name.
-
#repo_paths ⇒ Object
readonly
Returns the value of attribute repo_paths.
Instance Method Summary collapse
- #cookbooks ⇒ Object
-
#get_filename(filename) ⇒ Object
Implements abstract base’s requirement.
-
#initialize(manifest, *repo_paths) ⇒ FileSystemFileVendor
constructor
A new instance of FileSystemFileVendor.
Methods inherited from FileVendor
create_from_manifest, fetch_from_disk, fetch_from_remote, initialization_options, vendor_class
Constructor Details
#initialize(manifest, *repo_paths) ⇒ FileSystemFileVendor
Returns a new instance of FileSystemFileVendor.
36 37 38 39 40 |
# 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 |
Instance Attribute Details
#cookbook_name ⇒ Object (readonly)
Returns the value of attribute cookbook_name.
33 34 35 |
# File 'lib/chef/cookbook/file_system_file_vendor.rb', line 33 def cookbook_name @cookbook_name end |
#repo_paths ⇒ Object (readonly)
Returns the value of attribute repo_paths.
34 35 36 |
# File 'lib/chef/cookbook/file_system_file_vendor.rb', line 34 def repo_paths @repo_paths end |
Instance Method Details
#cookbooks ⇒ Object
42 43 44 |
# 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) ⇒ Object
Implements abstract base’s requirement. It looks in the Chef::Config.cookbook_path file hierarchy for the requested file.
49 50 51 52 53 54 |
# 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 |