summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Rodríguez <[email protected]>2025-03-13 19:09:39 +0100
committerHiroshi SHIBATA <[email protected]>2025-03-24 13:25:07 +0900
commit765da72839ba6b228656148389f84e4c89e1b629 (patch)
treea0f923db89675aada9a82e953e51c637f908d49d /lib
parent192e57db31911af68e0033c59b0c58139ef237d6 (diff)
[rubygems/rubygems] Refactor replacing sources
https://github.com/rubygems/rubygems/commit/4c05ac8306
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/12968
Diffstat (limited to 'lib')
-rw-r--r--lib/bundler/source_list.rb25
1 files changed, 15 insertions, 10 deletions
diff --git a/lib/bundler/source_list.rb b/lib/bundler/source_list.rb
index b7b2c4209a..82cf9d0f10 100644
--- a/lib/bundler/source_list.rb
+++ b/lib/bundler/source_list.rb
@@ -173,12 +173,12 @@ module Bundler
def map_sources(replacement_sources)
rubygems = @rubygems_sources.map do |source|
- replace_rubygems_source(replacement_sources, source) || source
+ replace_rubygems_source(replacement_sources, source)
end
git, plugin = [@git_sources, @plugin_sources].map do |sources|
sources.map do |source|
- replacement_sources.find {|s| s == source } || source
+ replace_source(replacement_sources, source)
end
end
@@ -190,19 +190,24 @@ module Bundler
end
def global_replacement_source(replacement_sources)
- replacement_source = replace_rubygems_source(replacement_sources, global_rubygems_source)
- return global_rubygems_source unless replacement_source
-
- replacement_source.local!
- replacement_source
+ replace_rubygems_source(replacement_sources, global_rubygems_source, &:local!)
end
def replace_rubygems_source(replacement_sources, gemfile_source)
+ replace_source(replacement_sources, gemfile_source) do |replacement_source|
+ # locked sources never include credentials so always prefer remotes from the gemfile
+ replacement_source.remotes = gemfile_source.remotes
+
+ yield replacement_source if block_given?
+ end
+ end
+
+ def replace_source(replacement_sources, gemfile_source)
replacement_source = replacement_sources.find {|s| s == gemfile_source }
- return unless replacement_source
+ return gemfile_source unless replacement_source
+
+ yield replacement_source if block_given?
- # locked sources never include credentials so always prefer remotes from the gemfile
- replacement_source.remotes = gemfile_source.remotes
replacement_source
end