Class: ChefCLI::CookbookProfiler::Identifiers

Inherits:
Object
  • Object
show all
Defined in:
lib/chef-cli/cookbook_profiler/identifiers.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cookbook_version) ⇒ Identifiers

Returns a new instance of Identifiers.



33
34
35
# File 'lib/chef-cli/cookbook_profiler/identifiers.rb', line 33

def initialize(cookbook_version)
  @cookbook_version = cookbook_version
end

Instance Attribute Details

#cookbook_versionObject (readonly)

Returns the value of attribute cookbook_version.



31
32
33
# File 'lib/chef-cli/cookbook_profiler/identifiers.rb', line 31

def cookbook_version
  @cookbook_version
end

Instance Method Details

#content_identifierObject



41
42
43
# File 'lib/chef-cli/cookbook_profiler/identifiers.rb', line 41

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

#cookbook_filesObject



66
67
68
# File 'lib/chef-cli/cookbook_profiler/identifiers.rb', line 66

def cookbook_files
  @files ||= cookbook_version.manifest_records_by_path
end

#dotted_decimal_identifierObject



45
46
47
48
49
50
51
52
# 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_checksumsObject



60
61
62
63
64
# 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_textObject



54
55
56
57
58
# 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_versionObject



37
38
39
# File 'lib/chef-cli/cookbook_profiler/identifiers.rb', line 37

def semver_version
  cookbook_version.version
end