diff options
author | David RodrÃguez <[email protected]> | 2024-05-22 20:51:30 +0200 |
---|---|---|
committer | git <[email protected]> | 2024-05-24 15:02:30 +0000 |
commit | c23798c2c47d531d6ed9a8557899b6f582ea6e1b (patch) | |
tree | 2f730720725b76ad93ff637bd0bd42797dc0204f | |
parent | ea7e3e7b789885fe01779b21749526e20d184e82 (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.rb | 28 | ||||
-rw-r--r-- | lib/bundler/installer.rb | 7 | ||||
-rw-r--r-- | lib/bundler/source_list.rb | 7 |
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 |