module Puppet # :nodoc: # The base class for all Puppet errors. We want to make it easy to add # line and file information. This probably isn't necessary for all # errors, but... class Error < RuntimeError attr_accessor :line, :file def backtrace if defined?(@backtrace) return @backtrace else return super end end def initialize(message, line = nil, file = nil) @message = message @line = line if line @file = file if file end def to_s str = nil if self.file and self.line str = "#{@message} at #{@file}:#{@line}" elsif self.line str = "#{@message} at line #{@line}" elsif self.file str = "#{@message} in #{self.file}" else str = @message.to_s end str end end # An error class for when I don't know what happened. Automatically # prints a stack trace when in debug mode. class DevError < Puppet::Error end end