class ChefCLI::CookbookProfiler::Identifiers

def content_identifier

def content_identifier
  Digest::SHA1.new.hexdigest(fingerprint_text)
end

def cookbook_files

def cookbook_files
  @files ||= cookbook_version.manifest_records_by_path
end

def dotted_decimal_identifier

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

def files_with_checksums

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

def fingerprint_text

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

def initialize(cookbook_version)

def initialize(cookbook_version)
  @cookbook_version = cookbook_version
end

def semver_version

def semver_version
  cookbook_version.version
end