diff options
-rwxr-xr-x | lib/puppet/provider/parsedfile.rb | 5 | ||||
-rw-r--r-- | lib/puppet/util/fileparsing.rb | 10 |
2 files changed, 13 insertions, 2 deletions
diff --git a/lib/puppet/provider/parsedfile.rb b/lib/puppet/provider/parsedfile.rb index 43c53601e..cdb770b8b 100755 --- a/lib/puppet/provider/parsedfile.rb +++ b/lib/puppet/provider/parsedfile.rb @@ -229,7 +229,10 @@ class Puppet::Provider::ParsedFile < Puppet::Provider old = @target begin @target = path - self.parse(text) + return self.parse(text) + rescue Puppet::Error => detail + detail.file = @target + raise detail ensure @target = old end diff --git a/lib/puppet/util/fileparsing.rb b/lib/puppet/util/fileparsing.rb index 169320ae5..26be0f506 100644 --- a/lib/puppet/util/fileparsing.rb +++ b/lib/puppet/util/fileparsing.rb @@ -219,8 +219,16 @@ module Puppet::Util::FileParsing # Split a bunch of text into lines and then parse them individually. def parse(text) + count = 1 lines(text).collect do |line| - parse_line(line) + count += 1 + if val = parse_line(line) + val + else + error = Puppet::Error.new("Could not parse line %s" % line.inspect) + error.line = count + raise error + end end end |