Class: Gem::Resolver::LockSet

Inherits:
Set
  • Object
show all
Defined in:
lib/rubygems/resolver/lock_set.rb

Overview

A set of gems from a gem dependencies lockfile.

Instance Attribute Summary collapse

Attributes inherited from Set

#errors, #prerelease, #remote

Instance Method Summary collapse

Methods inherited from Set

#prefetch, #remote?

Constructor Details

#initialize(sources) ⇒ LockSet

Creates a new LockSet from the given sources


12
13
14
15
16
17
18
19
20
# File 'lib/rubygems/resolver/lock_set.rb', line 12

def initialize(sources)
  super()

  @sources = sources.map do |source|
    Gem::Source::Lock.new source
  end

  @specs = []
end

Instance Attribute Details

#specsObject (readonly)

:nodoc:


7
8
9
# File 'lib/rubygems/resolver/lock_set.rb', line 7

def specs
  @specs
end

Instance Method Details

#add(name, version, platform) ⇒ Object

Creates a new IndexSpecification in this set using the given name, version and platform.

The specification's set will be the current set, and the source will be the current set's source.


29
30
31
32
33
34
35
36
37
38
# File 'lib/rubygems/resolver/lock_set.rb', line 29

def add(name, version, platform) # :nodoc:
  version = Gem::Version.new version
  specs = [
    Gem::Resolver::LockSpecification.new(self, name, version, @sources, platform)
  ]

  @specs.concat specs

  specs
end

#find_all(req) ⇒ Object

Returns an Array of IndexSpecification objects matching the DependencyRequest req.


44
45
46
47
48
# File 'lib/rubygems/resolver/lock_set.rb', line 44

def find_all(req)
  @specs.select do |spec|
    req.match? spec
  end
end

#load_spec(name, version, platform, source) ⇒ Object

Loads a Gem::Specification with the given name, version and platform. source is ignored.


54
55
56
57
58
59
60
61
62
63
64
# File 'lib/rubygems/resolver/lock_set.rb', line 54

def load_spec(name, version, platform, source) # :nodoc:
  dep = Gem::Dependency.new name, version

  found = @specs.find do |spec|
    dep.matches_spec? spec and spec.platform == platform
  end

  tuple = Gem::NameTuple.new found.name, found.version, found.platform

  found.source.fetch_spec tuple
end

#pretty_print(q) ⇒ Object

:nodoc:


66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/rubygems/resolver/lock_set.rb', line 66

def pretty_print(q) # :nodoc:
  q.group 2, '[LockSet', ']' do
    q.breakable
    q.text 'source:'

    q.breakable
    q.pp @source

    q.breakable
    q.text 'specs:'

    q.breakable
    q.pp @specs.map { |spec| spec.full_name }
  end
end