Sha256: 77ceabe71597a362df42e23664888c9157ab21f5803fde09fb513a6f75510c27

Contents?: true

Size: 1.21 KB

Versions: 96

Compression:

Stored size: 1.21 KB

Contents

module Terraspace::Terraform::RemoteState::Marker
  class PrettyTracer
    def initialize(caller_line)
      @caller_line = caller_line
    end

    # /full/path/to/app/stacks/a1/tfvars/dev.tfvars:4:in `__tilt_5560'
    def source_code
      line = @caller_line.sub(/:in `.*/,'')
      path, error_line_number = line.split(':')
      pretty_trace(path, error_line_number.to_i)
    end

    def pretty_trace(path, error_line_number)
      io = StringIO.new
      context = 5 # lines of context
      top, bottom = [error_line_number-context-1, 0].max, error_line_number+context-1

      io.puts "Here's the line in #{Terraspace::Util.pretty_path(path)} with the error:\n\n"

      lines = IO.read(path).split("\n")
      context = 5 # lines of context
      top, bottom = [error_line_number-context-1, 0].max, error_line_number+context-1
      spacing = lines.size.to_s.size
      lines[top..bottom].each_with_index do |line_content, index|
        line_number = top+index+1
        if line_number == error_line_number
          io.printf("%#{spacing}d %s\n".color(:red), line_number, line_content)
        else
          io.printf("%#{spacing}d %s\n", line_number, line_content)
        end
      end

      io.string
    end
  end
end

Version data entries

96 entries across 96 versions & 1 rubygems

Version Path
terraspace-2.2.17 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.16 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.15 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.14 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.13 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.12 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.11 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.10 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.9 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.8 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.7 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.6 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.5 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.4 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.3 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.2 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.1 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.2.0 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.1.7 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb
terraspace-2.1.6 lib/terraspace/terraform/remote_state/marker/pretty_tracer.rb