Module: Gemkeeper::CompactIndexServer::SpecMapper

Defined in:
lib/gemkeeper/compact_index_server/spec_mapper.rb

Overview

Maps a Gem::Specification to the compact-index representations the index is built from: the on-disk gem filename and a CompactIndex::GemVersion entry.

Class Method Summary collapse

Class Method Details

.dependencies(spec) ⇒ Object



31
32
33
34
35
# File 'lib/gemkeeper/compact_index_server/spec_mapper.rb', line 31

def dependencies(spec)
  (spec.runtime_dependencies || []).map do |dep|
    CompactIndex::Dependency.new(dep.name, dep.requirement.to_s)
  end
end

.filename(spec) ⇒ Object



13
14
15
16
17
# File 'lib/gemkeeper/compact_index_server/spec_mapper.rb', line 13

def filename(spec)
  platform = spec.platform.to_s
  suffix   = platform.empty? || platform == "ruby" ? "" : "-#{platform}"
  "#{spec.name}-#{spec.version}#{suffix}.gem"
end

.gem_version(spec, gem_file) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/gemkeeper/compact_index_server/spec_mapper.rb', line 19

def gem_version(spec, gem_file)
  CompactIndex::GemVersion.new(
    spec.version.to_s,
    spec.platform.to_s,
    Digest::SHA256.file(gem_file).hexdigest,
    nil,
    dependencies(spec),
    spec.required_ruby_version&.to_s,
    spec.required_rubygems_version&.to_s
  )
end