From 09602f4301ccf64d1b27e62d71f00569d1d78a72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Wed, 27 May 2020 18:30:46 +0200 Subject: [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 --- lib/bundler/compact_index_client/cache.rb | 18 +++++-- lib/bundler/compact_index_client/gem_parser.rb | 66 -------------------------- 2 files changed, 13 insertions(+), 71 deletions(-) delete mode 100644 lib/bundler/compact_index_client/gem_parser.rb (limited to 'lib') 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 -- cgit v1.2.3