summaryrefslogtreecommitdiff
path: root/lib/rubygems/config_file.rb
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2023-04-18 09:57:56 +0900
committergit <svn-admin@ruby-lang.org>2023-04-19 06:56:21 +0000
commitef54a9aeb689164d99ccccc8cc92c588936fa321 (patch)
treed2cd1a25ac80df05b160306fc284d4d3d0e41e61 /lib/rubygems/config_file.rb
parent644d7df021e17c70932da3173ec309ae1c8063d5 (diff)
[rubygems/rubygems] Introduce self.load_with_rubygems_config_hash
https://github.com/rubygems/rubygems/commit/9175b8cf2a
Diffstat (limited to 'lib/rubygems/config_file.rb')
-rw-r--r--lib/rubygems/config_file.rb72
1 files changed, 36 insertions, 36 deletions
diff --git a/lib/rubygems/config_file.rb b/lib/rubygems/config_file.rb
index 54b8842c6e..907d5d1199 100644
--- a/lib/rubygems/config_file.rb
+++ b/lib/rubygems/config_file.rb
@@ -342,21 +342,12 @@ if you believe they were disclosed to a third party.
end
def load_file(filename)
- require "bundler/yaml_serializer"
-
yaml_errors = [ArgumentError]
return {} unless filename && !filename.empty? && File.exist?(filename)
begin
- content = Bundler::YAMLSerializer.load(File.read(filename))
- if content.is_a? Hash
- content = self.class.convert_rubygems_config_hash(content)
- else
- warn "Failed to load #{filename} because it doesn't contain valid YAML hash"
- return {}
- end
- return content
+ return self.class.load_with_rubygems_config_hash(File.read(filename))
rescue *yaml_errors => e
warn "Failed to load #{filename}, #{e}"
rescue Errno::EACCES
@@ -530,42 +521,51 @@ if you believe they were disclosed to a third party.
Bundler::YAMLSerializer.dump(content)
end
- def self.convert_rubygems_config_hash(content)
- content.transform_keys! do |k|
- if k.match?(/\A:(.*)\Z/)
- k[1..-1].to_sym
- elsif k.include?("__")
- if k.is_a?(Symbol)
- k.to_s.gsub(/__/,".").gsub(%r{/\Z}, "").to_sym
+ def self.load_with_rubygems_config_hash(hash)
+ require "bundler/yaml_serializer"
+
+ content = Bundler::YAMLSerializer.load(hash)
+
+ if content.is_a? Hash
+ content.transform_keys! do |k|
+ if k.match?(/\A:(.*)\Z/)
+ k[1..-1].to_sym
+ elsif k.include?("__")
+ if k.is_a?(Symbol)
+ k.to_s.gsub(/__/,".").gsub(%r{/\Z}, "").to_sym
+ else
+ k.dup.gsub(/__/,".").gsub(%r{/\Z}, "")
+ end
else
- k.dup.gsub(/__/,".").gsub(%r{/\Z}, "")
+ k
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?
+ 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
- elsif v.is_a?(Hash) && v.empty?
- nil
- else
- v
end
- end
- content
+ content
+ else
+ warn "Failed to load #{filename} because it doesn't contain valid YAML hash"
+ {}
+ end
end
private