From 5338410abfb52c7675fea4db59c9754879cac4b9 Mon Sep 17 00:00:00 2001 From: Lamont Granquist Date: Wed, 5 Oct 2016 14:22:02 -0700 Subject: redo of the redo of the patch to fix #5089 see discussion in: https://github.com/chef/chef/pull/5096 Signed-off-by: Lamont Granquist --- lib/chef/cookbook/file_system_file_vendor.rb | 15 +++++++-------- 1 file 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 -- cgit v1.2.1