-
Notifications
You must be signed in to change notification settings - Fork 789
/
source_range.go
40 lines (33 loc) · 912 Bytes
/
source_range.go
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
// Copyright (c) The OpenTofu Authors
// SPDX-License-Identifier: MPL-2.0
// Copyright (c) 2023 HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package tfdiags
import (
"fmt"
"os"
"path/filepath"
)
type SourceRange struct {
Filename string
Start, End SourcePos
}
type SourcePos struct {
Line, Column, Byte int
}
// StartString returns a string representation of the start of the range,
// including the filename and the line and column numbers.
func (r SourceRange) StartString() string {
filename := r.Filename
// We'll try to relative-ize our filename here so it's less verbose
// in the common case of being in the current working directory. If not,
// we'll just show the full path.
wd, err := os.Getwd()
if err == nil {
relFn, err := filepath.Rel(wd, filename)
if err == nil {
filename = relFn
}
}
return fmt.Sprintf("%s:%d,%d", filename, r.Start.Line, r.Start.Column)
}