summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2023-04-17 20:24:13 +0900
committergit <svn-admin@ruby-lang.org>2023-04-19 06:56:20 +0000
commitcdc2e3de108d448026bf793d2b482d6abf7ae236 (patch)
treebcc05775ca2c1fe61ad734f154ad1c7dcac6ff10 /lib
parent7b959f628801d9f411a2dcc231c25a06e9d6234f (diff)
downloadruby-cdc2e3de108d448026bf793d2b482d6abf7ae236.tar.gz
[rubygems/rubygems] Wrap self.convert_rubygems_config_hash from Bundler::YAMLSerializer.load
https://github.com/rubygems/rubygems/commit/080880ac23
Diffstat (limited to 'lib')
-rw-r--r--lib/rubygems/config_file.rb72
-rw-r--r--lib/rubygems/gemcutter_utilities.rb3
2 files changed, 41 insertions, 34 deletions
diff --git a/lib/rubygems/config_file.rb b/lib/rubygems/config_file.rb
index b5c4b4dcf4..07ac2d11a6 100644
--- a/lib/rubygems/config_file.rb
+++ b/lib/rubygems/config_file.rb
@@ -357,39 +357,7 @@ if you believe they were disclosed to a third party.
begin
content = Bundler::YAMLSerializer.load(File.read(filename))
if content.is_a? Hash
- content.transform_keys! do |k|
- if k.match?(/\A:(.*)\Z/)
- k[1..-1].to_sym
- elsif k.match?(/__/)
- if k.is_a?(Symbol)
- k.to_s.gsub(/__/,".").to_sym
- else
- k.dup.gsub(/__/,".")
- end
- else
- k
- end
- end
-
- content.transform_values! do |v|
- if v.is_a?(String)
- if v.match?(/\A:(.*)\Z/)
- v[1..-1].to_sym
- elsif v.match?(/\A[+-]?\d+\Z/)
- v.to_i
- elsif v.match?(/\Atrue|false\Z/)
- v == "true"
- elsif v.empty?
- nil
- else
- v
- end
- elsif v.is_a?(Hash) && v.empty?
- nil
- else
- v
- end
- end
+ content = self.class.convert_rubygems_config_hash(content)
else
warn "Failed to load #{filename} because it doesn't contain valid YAML hash"
return {}
@@ -564,6 +532,44 @@ if you believe they were disclosed to a third party.
attr_reader :hash
protected :hash
+ def self.convert_rubygems_config_hash(content)
+ content.transform_keys! do |k|
+ if k.match?(/\A:(.*)\Z/)
+ k[1..-1].to_sym
+ elsif k.match?(/__/)
+ if k.is_a?(Symbol)
+ k.to_s.gsub(/__/,".").to_sym
+ else
+ k.dup.gsub(/__/,".")
+ end
+ else
+ k
+ end
+ end
+
+ content.transform_values! do |v|
+ if v.is_a?(String)
+ if v.match?(/\A:(.*)\Z/)
+ v[1..-1].to_sym
+ elsif v.match?(/\A[+-]?\d+\Z/)
+ v.to_i
+ elsif v.match?(/\Atrue|false\Z/)
+ v == "true"
+ elsif v.empty?
+ nil
+ else
+ v
+ end
+ elsif v.is_a?(Hash) && v.empty?
+ nil
+ else
+ v
+ end
+ end
+
+ content
+ end
+
private
def set_config_file_name(args)
diff --git a/lib/rubygems/gemcutter_utilities.rb b/lib/rubygems/gemcutter_utilities.rb
index 3687d07918..5a1c16cbc1 100644
--- a/lib/rubygems/gemcutter_utilities.rb
+++ b/lib/rubygems/gemcutter_utilities.rb
@@ -334,7 +334,8 @@ module Gem::GemcutterUtilities
require "bundler/yaml_serializer"
with_response response do |resp|
- Bundler::YAMLSerializer.load clean_text(resp.body)
+ profile = Bundler::YAMLSerializer.load clean_text(resp.body)
+ Gem::ConfigFile.convert_rubygems_config_hash profile
end
end