# File lib/chef_zero/cookbook_data.rb, line 29 def self.metadata_from(directory, name, version, recipe_names) metadata = PretendCookbookMetadata.new(PretendCookbook.new(name, recipe_names)) # If both .rb and .json exist, read .rb # TODO if recipes has 3 recipes in it, and the Ruby/JSON has only one, should # the resulting recipe list have 1, or 3-4 recipes in it? if has_child(directory, 'metadata.rb') begin file = filename(directory, 'metadata.rb') || "(#{name}/metadata.rb)" metadata.instance_eval(read_file(directory, 'metadata.rb'), file) rescue ChefZero::Log.error("Error loading cookbook #{name}: #{$!}\n #{$!.backtrace.join("\n ")}") end elsif has_child(directory, 'metadata.json') metadata.from_json(read_file(directory, 'metadata.json')) end result = {} metadata.to_hash.each_pair do |key,value| result[key.to_sym] = value end result[:version] = version if version result end
# File lib/chef_zero/cookbook_data.rb, line 6 def self.to_hash(cookbook, name, version=nil) frozen = false if cookbook.has_key?(:frozen) frozen = cookbook[:frozen] cookbook = cookbook.dup cookbook.delete(:frozen) end result = files_from(cookbook) recipe_names = result[:recipes].map do |recipe| recipe_name = recipe[:name][0..-2] recipe_name == 'default' ? name : "#{name}::#{recipe_name}" end result[:metadata] = metadata_from(cookbook, name, version, recipe_names) result[:name] = "#{name}-#{result[:metadata][:version]}" result[:json_class] = 'Chef::CookbookVersion' result[:cookbook_name] = name result[:version] = result[:metadata][:version] result[:chef_type] = 'cookbook_version' result[:frozen?] = true if frozen result end
Generated with the Darkfish Rdoc Generator 2.