class ChefCLI::CookbookProfiler::Identifiers

Attributes

cookbook_version[R]

Public Class Methods

new(cookbook_version) click to toggle source
# File lib/chef-cli/cookbook_profiler/identifiers.rb, line 33
def initialize(cookbook_version)
  @cookbook_version = cookbook_version
end

Public Instance Methods

content_identifier() click to toggle source
# File lib/chef-cli/cookbook_profiler/identifiers.rb, line 41
def content_identifier
  Digest::SHA1.new.hexdigest(fingerprint_text)
end
cookbook_files() click to toggle source
# File lib/chef-cli/cookbook_profiler/identifiers.rb, line 66
def cookbook_files
  @files ||= cookbook_version.manifest_records_by_path
end
dotted_decimal_identifier() click to toggle source
# File lib/chef-cli/cookbook_profiler/identifiers.rb, line 45
def dotted_decimal_identifier
  hex_id = content_identifier
  major = hex_id[0...14]
  minor = hex_id[14...28]
  patch = hex_id[28..40]
  decimal_integers = [major, minor, patch].map { |hex| hex.to_i(16) }
  decimal_integers.join(".")
end
files_with_checksums() click to toggle source
# File lib/chef-cli/cookbook_profiler/identifiers.rb, line 60
def files_with_checksums
  cookbook_files.inject([]) do |files_with_checksums, (_name, file_info)|
    files_with_checksums << [file_info["path"], file_info["checksum"]]
  end
end
fingerprint_text() click to toggle source
# File lib/chef-cli/cookbook_profiler/identifiers.rb, line 54
def fingerprint_text
  files_with_checksums.sort_by { |a| a[0] }.inject("") do |fingerprint, file_spec|
    fingerprint << "#{file_spec[0]}:#{file_spec[1]}\n"
  end
end
semver_version() click to toggle source
# File lib/chef-cli/cookbook_profiler/identifiers.rb, line 37
def semver_version
  cookbook_version.version
end