diff options
author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2020-05-27 18:30:46 +0200 |
---|---|---|
committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2020-06-05 07:32:42 +0900 |
commit | 09602f4301ccf64d1b27e62d71f00569d1d78a72 (patch) | |
tree | 5f06c9581880b35c3178d7b620d211ad2aa46d38 /lib | |
parent | 592762069d025148463266187d6519c4799353dc (diff) | |
download | ruby-09602f4301ccf64d1b27e62d71f00569d1d78a72.tar.gz |
[rubygems/rubygems] Revert multi ruby{,gems} version requirement fix
This reverts commit 20f06d9e178211a3016133852b72d21ac7bb93ad, reversing
changes made to f2b30cb70df8a518bef0e8a64bbceb86234d922d.
https://github.com/rubygems/rubygems/commit/40802bdb18
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bundler/compact_index_client/cache.rb | 18 | ||||
-rw-r--r-- | lib/bundler/compact_index_client/gem_parser.rb | 66 |
2 files changed, 13 insertions, 71 deletions
diff --git a/lib/bundler/compact_index_client/cache.rb b/lib/bundler/compact_index_client/cache.rb index ef8517e8f6..f6105d3bb3 100644 --- a/lib/bundler/compact_index_client/cache.rb +++ b/lib/bundler/compact_index_client/cache.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require_relative "gem_parser" - module Bundler class CompactIndexClient class Cache @@ -94,9 +92,19 @@ module Bundler header ? lines[header + 1..-1] : lines end - def parse_gem(line) - @gem_parser ||= GemParser.new - @gem_parser.parse(line) + def parse_gem(string) + version_and_platform, rest = string.split(" ", 2) + version, platform = version_and_platform.split("-", 2) + dependencies, requirements = rest.split("|", 2).map {|s| s.split(",") } if rest + dependencies = dependencies ? dependencies.map {|d| parse_dependency(d) } : [] + requirements = requirements ? requirements.map {|r| parse_dependency(r) } : [] + [version, platform, dependencies, requirements] + end + + def parse_dependency(string) + dependency = string.split(":") + dependency[-1] = dependency[-1].split("&") if dependency.size > 1 + dependency end def info_roots diff --git a/lib/bundler/compact_index_client/gem_parser.rb b/lib/bundler/compact_index_client/gem_parser.rb deleted file mode 100644 index 117da64ce6..0000000000 --- a/lib/bundler/compact_index_client/gem_parser.rb +++ /dev/null @@ -1,66 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CompactIndexClient - class GemParser - def parse(line) - version_and_platform, rest = line.split(" ", 2) - version, platform = version_and_platform.split("-", 2) - dependencies, requirements = rest.split("|", 2) if rest - dependencies = dependencies ? parse_dependencies(dependencies) : [] - requirements = requirements ? parse_requirements(requirements) : [] - [version, platform, dependencies, requirements] - end - - private - - def parse_dependencies(raw_dependencies) - raw_dependencies.split(",").map {|d| parse_dependency(d) } - end - - def parse_dependency(raw_dependency) - dependency = raw_dependency.split(":") - dependency[-1] = dependency[-1].split("&") if dependency.size > 1 - dependency - end - - # Parse the following format: - # - # line = "checksum:#{checksum}" - # line << ",ruby:#{ruby_version}" if ruby_version && ruby_version != ">= 0" - # line << ",rubygems:#{rubygems_version}" if rubygems_version && rubygems_version != ">= 0" - # - # See compact_index/gem_version.rb for details. - # - # We can't use parse_dependencies for requirements because "," in - # ruby_version and rubygems_version isn't escaped as "&". For example, - # "checksum:XXX,ruby:>=2.2, < 2.7.dev" can't be parsed as expected. - def parse_requirements(raw_requirements) - requirements = [] - checksum = raw_requirements.match(/\A(checksum):([^,]+)/) - if checksum - requirements << [checksum[1], [checksum[2]]] - raw_requirements = checksum.post_match - if raw_requirements.start_with?(",") - raw_requirements = raw_requirements[1..-1] - end - end - rubygems = raw_requirements.match(/(rubygems):(.+)\z/) - if rubygems - raw_requirements = rubygems.pre_match - if raw_requirements.start_with?(",") - raw_requirements = raw_requirements[1..-1] - end - end - ruby = raw_requirements.match(/\A(ruby):(.+)\z/) - if ruby - requirements << [ruby[1], ruby[2].split(/\s*,\s*/)] - end - if rubygems - requirements << [rubygems[1], rubygems[2].split(/\s*,\s*/)] - end - requirements - end - end - end -end |