diff options
author | danielsdeleo <dan@chef.io> | 2016-02-05 15:34:04 -0800 |
---|---|---|
committer | danielsdeleo <dan@chef.io> | 2016-02-16 15:26:43 -0800 |
commit | e74dd7d7a3ff3cf1066a9bafa53790dc84f05141 (patch) | |
tree | af121a9682092aadd06656ed64bd75b754c7dd46 | |
parent | bab6d4b9316bc5fe18e263d8a8f46396f9038bf0 (diff) | |
download | chef-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.rb | 80 |
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 |