diff options
Diffstat (limited to 'lib/rubygems')
-rw-r--r-- | lib/rubygems/config_file.rb | 72 | ||||
-rw-r--r-- | lib/rubygems/gemcutter_utilities.rb | 3 |
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 |