summaryrefslogtreecommitdiff
path: root/lib/bundler/resolver/package.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bundler/resolver/package.rb')
-rw-r--r--lib/bundler/resolver/package.rb18
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/bundler/resolver/package.rb b/lib/bundler/resolver/package.rb
index 7d64632860..0461328683 100644
--- a/lib/bundler/resolver/package.rb
+++ b/lib/bundler/resolver/package.rb
@@ -15,12 +15,14 @@ module Bundler
class Package
attr_reader :name, :platforms, :dependency, :locked_version
- def initialize(name, platforms, locked_specs, unlock, dependency: nil)
+ def initialize(name, platforms, locked_specs:, unlock:, prerelease: false, dependency: nil)
@name = name
@platforms = platforms
@locked_version = locked_specs[name].first&.version
@unlock = unlock
@dependency = dependency || Dependency.new(name, @locked_version)
+ @top_level = !dependency.nil?
+ @prerelease = @dependency.prerelease? || @locked_version&.prerelease? || prerelease ? :consider_first : :ignore
end
def to_s
@@ -31,6 +33,10 @@ module Bundler
false
end
+ def top_level?
+ @top_level
+ end
+
def meta?
@name.end_with?("\0")
end
@@ -47,8 +53,16 @@ module Bundler
@unlock.empty? || @unlock.include?(name)
end
+ def ignores_prereleases?
+ @prerelease == :ignore
+ end
+
def prerelease_specified?
- @dependency.prerelease?
+ @prerelease == :consider_first
+ end
+
+ def consider_prereleases!
+ @prerelease = :consider_last
end
def force_ruby_platform?