diff options
author | David RodrÃguez <[email protected]> | 2025-03-13 19:09:39 +0100 |
---|---|---|
committer | Hiroshi SHIBATA <[email protected]> | 2025-03-24 13:25:07 +0900 |
commit | 765da72839ba6b228656148389f84e4c89e1b629 (patch) | |
tree | a0f923db89675aada9a82e953e51c637f908d49d /lib | |
parent | 192e57db31911af68e0033c59b0c58139ef237d6 (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.rb | 25 |
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 |