summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rodríguez <[email protected]>2024-05-22 20:51:30 +0200
committergit <[email protected]>2024-05-24 15:02:30 +0000
commitc23798c2c47d531d6ed9a8557899b6f582ea6e1b (patch)
tree2f730720725b76ad93ff637bd0bd42797dc0204f
parentea7e3e7b789885fe01779b21749526e20d184e82 (diff)
[rubygems/rubygems] Remove `@remote` instance variable from Definition
It's a sources specific concern, so keep it there. It allows to simplify the code quite a lot. https://github.com/rubygems/rubygems/commit/639f0b72f4
-rw-r--r--lib/bundler/definition.rb28
-rw-r--r--lib/bundler/installer.rb7
-rw-r--r--lib/bundler/source_list.rb7
3 files changed, 16 insertions, 26 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb
index bc526fa3e3..5c9437a83c 100644
--- a/lib/bundler/definition.rb
+++ b/lib/bundler/definition.rb
@@ -69,7 +69,6 @@ module Bundler
@sources = sources
@unlock = unlock
@optional_groups = optional_groups
- @remote = false
@prefer_local = false
@specs = nil
@ruby_version = ruby_version
@@ -164,7 +163,6 @@ module Bundler
end
def resolve_only_locally!
- @remote = false
sources.local_only!
resolve
end
@@ -175,26 +173,12 @@ module Bundler
end
def resolve_remotely!
- @remote = true
sources.remote!
resolve
end
- def resolution_mode=(options)
- if options["local"]
- @remote = false
- else
- @remote = true
- @prefer_local = options["prefer-local"]
- end
- end
-
- def setup_sources_for_resolve
- if @remote == false
- sources.cached!
- else
- sources.remote!
- end
+ def prefer_local!
+ @prefer_local = true
end
# For given dependency list returns a SpecSet with Gemspec of all the required
@@ -594,7 +578,7 @@ module Bundler
if missing_specs.any?
missing_specs.each do |s|
locked_gem = @locked_specs[s.name].last
- next if locked_gem.nil? || locked_gem.version != s.version || !@remote
+ next if locked_gem.nil? || locked_gem.version != s.version || sources.local_mode?
raise GemNotFound, "Your bundle is locked to #{locked_gem} from #{locked_gem.source}, but that version can " \
"no longer be found in that source. That means the author of #{locked_gem} has removed it. " \
"You'll need to update your bundle to a version other than #{locked_gem} that hasn't been " \
@@ -613,7 +597,7 @@ module Bundler
break if incomplete_specs.empty?
Bundler.ui.debug("The lockfile does not have all gems needed for the current platform though, Bundler will still re-resolve dependencies")
- setup_sources_for_resolve
+ sources.remote!
resolution_packages.delete(incomplete_specs)
@resolve = start_resolution
specs = resolve.materialize(dependencies)
@@ -974,7 +958,7 @@ module Bundler
else
{ default: Source::RubygemsAggregate.new(sources, source_map) }.merge(source_map.direct_requirements)
end
- source_requirements.merge!(source_map.locked_requirements) unless @remote
+ source_requirements.merge!(source_map.locked_requirements) if nothing_changed?
metadata_dependencies.each do |dep|
source_requirements[dep.name] = sources.metadata_source
end
@@ -1045,8 +1029,6 @@ module Bundler
def dup_for_full_unlock
unlocked_definition = self.class.new(@lockfile, @dependencies, @sources, true, @ruby_version, @optional_groups, @gemfiles)
- unlocked_definition.resolution_mode = { "local" => !@remote }
- unlocked_definition.setup_sources_for_resolve
unlocked_definition.gem_version_promoter.tap do |gvp|
gvp.level = gem_version_promoter.level
gvp.strict = gem_version_promoter.strict
diff --git a/lib/bundler/installer.rb b/lib/bundler/installer.rb
index 433914d644..1c5ed7c048 100644
--- a/lib/bundler/installer.rb
+++ b/lib/bundler/installer.rb
@@ -235,12 +235,13 @@ module Bundler
# returns whether or not a re-resolve was needed
def resolve_if_needed(options)
- @definition.resolution_mode = options
+ @definition.prefer_local! if options["prefer-local"]
- if !options["force"] && !Bundler.settings[:inline] && @definition.no_resolve_needed? && [email protected]_specs?
+ if options["local"] || (!options["force"] && !Bundler.settings[:inline] && @definition.no_resolve_needed? && [email protected]_specs?)
+ @definition.resolve_with_cache!
false
else
- @definition.setup_sources_for_resolve
+ @definition.resolve_remotely!
true
end
end
diff --git a/lib/bundler/source_list.rb b/lib/bundler/source_list.rb
index bbaac33a95..ece2177d49 100644
--- a/lib/bundler/source_list.rb
+++ b/lib/bundler/source_list.rb
@@ -22,6 +22,7 @@ module Bundler
@metadata_source = Source::Metadata.new
@merged_gem_lockfile_sections = false
+ @local_mode = true
end
def merged_gem_lockfile_sections?
@@ -73,6 +74,10 @@ module Bundler
global_rubygems_source
end
+ def local_mode?
+ @local_mode
+ end
+
def default_source
global_path_source || global_rubygems_source
end
@@ -145,6 +150,8 @@ module Bundler
end
def remote!
+ @local_mode = false
+
all_sources.each(&:remote!)
end