summaryrefslogtreecommitdiffstats
path: root/lib/puppet/error.rb
blob: d0a0c9cc53553af44d396433f3d4ccc4f71c755f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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