diff options
-rw-r--r-- | lib/chef/cookbook/file_system_file_vendor.rb | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/lib/chef/cookbook/file_system_file_vendor.rb b/lib/chef/cookbook/file_system_file_vendor.rb index 91f1c9f853..8088ed00cd 100644 --- a/lib/chef/cookbook/file_system_file_vendor.rb +++ b/lib/chef/cookbook/file_system_file_vendor.rb @@ -37,20 +37,19 @@ class Chef 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? + raise ArgumentError, "You must specify at least one repo path" if repo_paths.empty? + end + + def cookbooks + @cookbooks ||= Chef::CookbookLoader.new(repo_paths).load_cookbooks end # Implements abstract base's requirement. It looks in the # Chef::Config.cookbook_path file hierarchy for the requested # file. 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 = File.join(cookbooks[cookbook_name].root_dir, filename) if cookbooks.has_key?(cookbook_name) + raise "File #{filename} does not exist for cookbook #{cookbook_name}" unless location && File.exist?(location) location end |