Class: Chef::Cookbook::ManifestV0
- Inherits:
-
Object
- Object
- Chef::Cookbook::ManifestV0
- Extended by:
- Mixin::VersionedAPI
- Defined in:
- lib/chef/cookbook/manifest_v0.rb
Constant Summary collapse
- COOKBOOK_SEGMENTS =
%w{ resources providers recipes definitions libraries attributes files templates root_files }.freeze
Class Method Summary collapse
- .from_hash(hash) ⇒ Object
- .to_h(manifest) ⇒ Object (also: to_hash)
Methods included from Mixin::VersionedAPI
Class Method Details
.from_hash(hash) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/chef/cookbook/manifest_v0.rb', line 31 def from_hash(hash) response = Mash.new(hash) response[:all_files] = COOKBOOK_SEGMENTS.inject([]) do |memo, segment| next memo if hash[segment].nil? || hash[segment].empty? hash[segment].each do |file| file["name"] = "#{segment}/#{file["name"]}" memo << file end response.delete(segment) memo end response end |
.to_h(manifest) ⇒ Object Also known as: to_hash
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/chef/cookbook/manifest_v0.rb', line 46 def to_h(manifest) result = manifest.manifest.dup result.delete("all_files") files = manifest.by_parent_directory files.keys.each_with_object(result) do |parent, memo| if COOKBOOK_SEGMENTS.include?(parent) memo[parent] ||= [] files[parent].each do |file| file["name"] = file["name"].split("/")[1] file.delete("full_path") memo[parent] << file end end end # Ensure all segments are set to [] if they don't exist. # See https://github.com/chef/chef/issues/6044 COOKBOOK_SEGMENTS.each do |segment| result[segment] ||= [] end result.merge({ "frozen?" => manifest.frozen_version?, "chef_type" => "cookbook_version" }) end |