class Chef::Cookbook::ManifestV0
Constants
- COOKBOOK_SEGMENTS
Public Class Methods
from_hash(hash)
click to toggle source
# File lib/chef/cookbook/manifest_v0.rb, line 29 def self.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"]}" unless segment == "root_files" memo << file end response.delete(segment) memo end response end
to_hash(manifest)
click to toggle source
# File lib/chef/cookbook/manifest_v0.rb, line 43 def self.to_hash(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] unless parent == "root_files" 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