summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel E. Giddins <segiddins@segiddins.me>2015-05-04 21:17:59 -0700
committerSamuel E. Giddins <segiddins@segiddins.me>2015-05-04 21:17:59 -0700
commitd5b92f372cd179a21946be14c5fa2865d761d59c (patch)
tree445b9a112364933aea01754d296da4e474b14b79
parent84c32d00d59bb90a95eef72422f52253835aa1a5 (diff)
downloadbundler-seg-lenient-parser.tar.gz
[LockfileParser] Leniently handle unknown statesseg-lenient-parser
-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