tfdiags: SourceRange.StartString
This helper provides a concise string showing the filename, start line and start column for a range, for easy inclusion in error messages.
This commit is contained in:
parent
fc20f419dd
commit
ab5efb805c
|
@ -1,5 +1,11 @@
|
|||
package tfdiags
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
type SourceRange struct {
|
||||
Filename string
|
||||
Start, End SourcePos
|
||||
|
@ -8,3 +14,22 @@ type SourceRange struct {
|
|||
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)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue