From da3e610adf617503b20b34def31e89b3cc709dcd Mon Sep 17 00:00:00 2001 From: drbrain Date: Sun, 8 Dec 2013 19:32:07 +0000 Subject: * lib/rubygems: Update to RubyGems master 096db36. Changes include support for PATH in Gemfile.lock and a typo fix from Akira Matsuda. * test/rubygems: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44081 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rubygems/request_set/lockfile.rb | 52 +++++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 3 deletions(-) (limited to 'lib/rubygems/request_set') diff --git a/lib/rubygems/request_set/lockfile.rb b/lib/rubygems/request_set/lockfile.rb index 81bc4d620d..7ffb815716 100644 --- a/lib/rubygems/request_set/lockfile.rb +++ b/lib/rubygems/request_set/lockfile.rb @@ -222,6 +222,8 @@ class Gem::RequestSet::Lockfile parse_GIT when 'GEM' then parse_GEM + when 'PATH' then + parse_PATH when 'PLATFORMS' then parse_PLATFORMS else @@ -243,13 +245,14 @@ class Gem::RequestSet::Lockfile when :bang then get :bang - git_spec = @set.sets.select { |set| - Gem::Resolver::GitSet === set + spec = @set.sets.select { |set| + Gem::Resolver::GitSet === set or + Gem::Resolver::VendorSet === set }.map { |set| set.specs[name] }.first - requirements << git_spec.version + requirements << spec.version when :l_paren then get :l_paren @@ -366,6 +369,49 @@ class Gem::RequestSet::Lockfile @set.sets << set end + def parse_PATH # :nodoc: + get :entry, 'remote' + _, directory, = get :text + + skip :newline + + get :entry, 'specs' + + skip :newline + + set = Gem::Resolver::VendorSet.new + last_spec = nil + + while not @tokens.empty? and :text == peek.first do + _, name, column, = get :text + + case peek[0] + when :newline then + last_spec.add_dependency Gem::Dependency.new name if column == 6 + when :l_paren then + get :l_paren + + type, data, = get [:text, :requirement] + + if type == :text and column == 4 then + last_spec = set.add_vendor_gem name, directory + else + dependency = parse_dependency name, data + + last_spec.spec.dependencies << dependency + end + + get :r_paren + else + raise "BUG: unknown token #{peek}" + end + + skip :newline + end + + @set.sets << set + end + def parse_PLATFORMS # :nodoc: while not @tokens.empty? and :text == peek.first do _, name, = get :text -- cgit v1.2.3