summaryrefslogtreecommitdiff
path: root/lib/rubygems/config_file.rb
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/rubygems/config_file.rb
parent7b959f628801d9f411a2dcc231c25a06e9d6234f (diff)
[rubygems/rubygems] Wrap self.convert_rubygems_config_hash from Bundler::YAMLSerializer.load
https://github.com/rubygems/rubygems/commit/080880ac23
Diffstat (limited to 'lib/rubygems/config_file.rb')
-rw-r--r--lib/rubygems/config_file.rb72
1 files changed, 39 insertions, 33 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)