Module: Bundler::Checksum

Defined in:
lib/bundler/checksum.rb,
lib/bundler/checksum/command.rb,
lib/bundler/checksum/version.rb

Defined Under Namespace

Modules: Command

Constant Summary collapse

VERSION =

bundler-checksum version

'0.1.0'

Class Method Summary collapse

Class Method Details

.checksum_fileObject



79
80
81
# File 'lib/bundler/checksum.rb', line 79

def checksum_file
  @checksum_file ||= File.join(File.dirname(Bundler.default_gemfile), 'Gemfile.checksum')
end

.checksum_for(gem_name, gem_version, gem_platform) ⇒ Object



89
90
91
92
93
94
95
96
97
# File 'lib/bundler/checksum.rb', line 89

def checksum_for(gem_name, gem_version, gem_platform)
  item = checksums_from_file.detect do |item|
    item[:name] == gem_name &&
      item[:platform] == gem_platform &&
      item[:version] == gem_version
  end

  item&.fetch(:checksum)
end

.checksums_from_fileObject



83
84
85
86
87
# File 'lib/bundler/checksum.rb', line 83

def checksums_from_file
  @checksums_from_file ||= JSON.parse(File.open(checksum_file).read, symbolize_names: true)
rescue JSON::ParserError => e
  raise "Invalid checksum file: #{e.message}"
end

.patch!Object



99
100
101
102
103
104
105
106
# File 'lib/bundler/checksum.rb', line 99

def patch!
  return if defined?(@patched) && @patched
  @patched = true

  Bundler.ui.info "Patching bundler with bundler-checksum..."
  require 'bundler/rubygems_gem_installer'
  ::Bundler::RubyGemsGemInstaller.prepend(Bundler::Patches::RubyGemsInstallerPatch)
end