lib/berkshelf/cached_cookbook.rb in berkshelf-2.0.18 vs lib/berkshelf/cached_cookbook.rb in berkshelf-3.0.0.beta1
- old
+ new
@@ -1,9 +1,7 @@
module Berkshelf
class CachedCookbook < Ridley::Chef::Cookbook
- @loaded = Hash.new
-
class << self
# @param [#to_s] path
# a path on disk to the location of a Cookbook downloaded by the Downloader
#
# @return [CachedCookbook]
@@ -12,16 +10,24 @@
def from_store_path(path)
path = Pathname.new(path)
cached_name = File.basename(path.to_s).slice(DIRNAME_REGEXP, 1)
return nil if cached_name.nil?
- @loaded[path.to_s] ||= from_path(path, name: cached_name)
+ from_path(path, name: cached_name)
end
end
DIRNAME_REGEXP = /^(.+)-(.+)$/
+ extend Forwardable
+
+ def_delegator :metadata, :description
+ def_delegator :metadata, :maintainer
+ def_delegator :metadata, :maintainer_email
+ def_delegator :metadata, :license
+ def_delegator :metadata, :platforms
+
# @return [Hash]
def dependencies
metadata.recommendations.merge(metadata.dependencies)
end
@@ -36,22 +42,28 @@
a.push " Platforms: #{pretty_map(metadata.platforms, 14)}" unless metadata.platforms.blank?
a.push "Dependencies: #{pretty_map(dependencies, 14)}" unless dependencies.blank?
end.join("\n")
end
+ # High-level information about this cached cookbook in JSON format
+ #
+ # @return [String]
def pretty_json
- pretty_hash.to_json
+ JSON.pretty_generate(pretty_hash)
end
+ # High-level information about this cached cookbook in Hash format
+ #
+ # @return [Hash]
def pretty_hash
{}.tap do |h|
- h[:name] = cookbook_name unless name.blank?
+ h[:name] = cookbook_name unless cookbook_name.blank?
h[:version] = version unless version.blank?
- h[:description] = metadata.description unless metadata.description.blank?
- h[:author] = metadata.maintainer unless metadata.maintainer.blank?
- h[:email] = metadata.maintainer_email unless metadata.maintainer_email.blank?
- h[:license] = metadata.license unless metadata.license.blank?
- h[:platforms] = metadata.platforms.to_hash unless metadata.platforms.blank?
+ h[:description] = description unless description.blank?
+ h[:author] = maintainer unless maintainer.blank?
+ h[:email] = maintainer_email unless maintainer_email.blank?
+ h[:license] = license unless license.blank?
+ h[:platforms] = platforms.to_hash unless platforms.blank?
h[:dependencies] = dependencies.to_hash unless dependencies.blank?
end
end
private