summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndré Arko <mail@arko.net>2015-05-05 00:23:43 -0700
committerAndré Arko <mail@arko.net>2015-05-05 00:23:43 -0700
commitb6887069aeed5f68577853638c9528b76e7ea899 (patch)
treede24c7bd6f2a99de638de23104d2d2c655413ab4
parent1dfa81760a993f4fb0cd9517a5d4c5ff461e609a (diff)
parentd5b92f372cd179a21946be14c5fa2865d761d59c (diff)
downloadbundler-b6887069aeed5f68577853638c9528b76e7ea899.tar.gz
Merge pull request #3619 from bundler/seg-lenient-parser
[LockfileParser] Leniently handle unknown states
-rw-r--r--lib/bundler/lockfile_parser.rb12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/bundler/lockfile_parser.rb b/lib/bundler/lockfile_parser.rb
index 7030508988..9586763c66 100644
--- a/lib/bundler/lockfile_parser.rb
+++ b/lib/bundler/lockfile_parser.rb
@@ -21,12 +21,13 @@ module Bundler
PATH = "PATH"
SPECS = " specs:"
OPTIONS = /^ ([a-z]+): (.*)$/i
+ SOURCE = [GIT, GEM, PATH]
def initialize(lockfile)
@platforms = []
@sources = []
@dependencies = []
- @state = :source
+ @state = nil
@specs = {}
@rubygems_aggregate = Source::Rubygems.new
@@ -37,11 +38,16 @@ module Bundler
end
lockfile.split(/(?:\r?\n)+/).each do |line|
- if line == DEPENDENCIES
+ if SOURCE.include?(line)
+ @state = :source
+ parse_source(line)
+ elsif line == DEPENDENCIES
@state = :dependency
elsif line == PLATFORMS
@state = :platform
- else
+ elsif line =~ /^[^\s]/
+ @state = nil
+ elsif @state
send("parse_#{@state}", line)
end
end