ruby/lib/bundler/resolver/base.rb
Hiroshi SHIBATA a22eca8231
Merge the latest stable versions of RubyGems and Bundler to Ruby 3.2.x (#7061)
[Bug #19350]

* Merge RubyGems-3.4.2 and Bundler-2.4.2

* Merge RubyGems-3.4.3 and Bundler-2.4.3

* Generate parser-text.rb of racc when sync it

* Ignore LICENSE files of libraries vendored in rubygems [ci skip]

* Adjust spec of bundler like as `sync_default_gems` [ci skip]

* Fixed a typo

* Removed vendored LICENSE file.

* Update LEGAL sections for pub_grub

* Merge RubyGems-3.4.4 and Bundler-2.4.4

* Merge RubyGems-3.4.5 and Bundler-2.4.5

Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
2023-01-25 23:32:01 +09:00

77 lines
1.7 KiB
Ruby

# frozen_string_literal: true
require_relative "package"
module Bundler
class Resolver
class Base
attr_reader :packages, :requirements, :source_requirements
def initialize(source_requirements, dependencies, base, platforms, options)
@source_requirements = source_requirements
@base = base
@packages = Hash.new do |hash, name|
hash[name] = Package.new(name, platforms, **options)
end
@requirements = dependencies.map do |dep|
dep_platforms = dep.gem_platforms(platforms)
# Dependencies scoped to external platforms are ignored
next if dep_platforms.empty?
name = dep.name
@packages[name] = Package.new(name, dep_platforms, **options.merge(:dependency => dep))
dep
end.compact
end
def [](name)
@base[name]
end
def delete(specs)
specs.each do |spec|
@base.delete(spec)
end
end
def get_package(name)
@packages[name]
end
def base_requirements
@base_requirements ||= build_base_requirements
end
def unlock_names(names)
names.each do |name|
@base.delete_by_name(name)
@base_requirements.delete(name)
end
end
def include_prereleases(names)
names.each do |name|
get_package(name).consider_prereleases!
end
end
private
def build_base_requirements
base_requirements = {}
@base.each do |ls|
req = Gem::Requirement.new(ls.version)
base_requirements[ls.name] = req
end
base_requirements
end
end
end
end