summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordanielsdeleo <dan@chef.io>2016-02-05 15:34:04 -0800
committerdanielsdeleo <dan@chef.io>2016-02-16 15:26:43 -0800
commite74dd7d7a3ff3cf1066a9bafa53790dc84f05141 (patch)
treeaf121a9682092aadd06656ed64bd75b754c7dd46
parentbab6d4b9316bc5fe18e263d8a8f46396f9038bf0 (diff)
downloadchef-e74dd7d7a3ff3cf1066a9bafa53790dc84f05141.tar.gz
Inline cheffs cookbook dir 1 level
-rw-r--r--lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbooks_dir.rb80
1 files changed, 79 insertions, 1 deletions
diff --git a/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbooks_dir.rb b/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbooks_dir.rb
index fa6ce9ba9e..b314d5a341 100644
--- a/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbooks_dir.rb
+++ b/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbooks_dir.rb
@@ -24,9 +24,34 @@ class Chef
module ChefFS
module FileSystem
module Repository
- class ChefRepositoryFileSystemCookbooksDir < ChefRepositoryFileSystemEntry
+
+ # Original
+ ## class ChefRepositoryFileSystemCookbooksDir < ChefRepositoryFileSystemEntry
+
+ # With ChefRepositoryFileSystemEntry inlined
+ class ChefRepositoryFileSystemCookbooksDir < FileSystemEntry
+
+ # Original initialize
+ ## def initialize(name, parent, file_path)
+ ## super(name, parent, file_path)
+ ## begin
+ ## @chefignore = Chef::Cookbook::Chefignore.new(self.file_path)
+ ## rescue Errno::EISDIR
+ ## rescue Errno::EACCES
+ ## # Work around a bug in Chefignore when chefignore is a directory
+ ## end
+ ## end
+
+ # ChefRepositoryFileSystemEntry#initialize
+ ## def initialize(name, parent, file_path = nil, data_handler = nil)
+ ## super(name, parent, file_path)
+ ## @data_handler = data_handler
+ ## end
+
+ # inlined initialize
def initialize(name, parent, file_path)
super(name, parent, file_path)
+ @data_handler = nil
begin
@chefignore = Chef::Cookbook::Chefignore.new(self.file_path)
rescue Errno::EISDIR
@@ -77,6 +102,59 @@ class Chef
def make_child_entry(child_name)
ChefRepositoryFileSystemCookbookDir.new(child_name, self)
end
+
+ public
+
+ ##############################
+ # Inlined from ChefRepositoryFileSystemEntry
+ ##############################
+
+ def write_pretty_json=(value)
+ @write_pretty_json = value
+ end
+
+ def write_pretty_json
+ @write_pretty_json.nil? ? root.write_pretty_json : @write_pretty_json
+ end
+
+ def data_handler
+ @data_handler || parent.data_handler
+ end
+
+ def chef_object
+ begin
+ return data_handler.chef_object(Chef::JSONCompat.parse(read))
+ rescue
+ Chef::Log.error("Could not read #{path_for_printing} into a Chef object: #{$!}")
+ end
+ nil
+ end
+
+ # overridden by subclass
+ ## def can_have_child?(name, is_dir)
+ ## !is_dir && name[-5..-1] == ".json"
+ ## end
+
+ def write(file_contents)
+ if file_contents && write_pretty_json && name[-5..-1] == ".json"
+ file_contents = minimize(file_contents, self)
+ end
+ super(file_contents)
+ end
+
+ def minimize(file_contents, entry)
+ object = Chef::JSONCompat.parse(file_contents)
+ object = data_handler.normalize(object, entry)
+ object = data_handler.minimize(object, entry)
+ Chef::JSONCompat.to_json_pretty(object)
+ end
+
+ # overridden by subclass
+ ## protected
+
+ ## def make_child_entry(child_name)
+ ## ChefRepositoryFileSystemEntry.new(child_name, self)
+ ## end
end
end
end