1
0
mirror of https://github.com/golang/go synced 2024-11-20 03:04:40 -07:00

cmd/go: use relative paths in go fix, go fmt, go vet output

Fixes #2686.

R=golang-dev, bradfitz, r
CC=golang-dev
https://golang.org/cl/5528089
This commit is contained in:
Russ Cox 2012-01-12 15:28:52 -08:00
parent 4505ae3863
commit c2ffd9d0c2
4 changed files with 21 additions and 13 deletions

View File

@ -794,8 +794,13 @@ func (b *builder) showcmd(dir string, format string, args ...interface{}) {
// showOutput also replaces references to the work directory with $WORK.
//
func (b *builder) showOutput(dir, desc, out string) {
prefix := "# " + desc + "\n"
suffix := relPaths(dir, out)
prefix := "# " + desc
suffix := "\n" + out
pwd, _ := os.Getwd()
if reldir, err := filepath.Rel(pwd, dir); err == nil && len(reldir) < len(dir) {
suffix = strings.Replace(suffix, " "+dir, " "+reldir, -1)
suffix = strings.Replace(suffix, "\n"+dir, "\n"+reldir, -1)
}
suffix = strings.Replace(suffix, " "+b.work, " $WORK", -1)
b.output.Lock()
@ -803,16 +808,19 @@ func (b *builder) showOutput(dir, desc, out string) {
fmt.Print(prefix, suffix)
}
// relPaths returns a copy of out with references to dir
// made relative to the current directory if that would be shorter.
func relPaths(dir, out string) string {
x := "\n" + out
// relPaths returns a copy of paths with absolute paths
// made relative to the current directory if they would be shorter.
func relPaths(paths []string) []string {
var out []string
pwd, _ := os.Getwd()
if reldir, err := filepath.Rel(pwd, dir); err == nil && len(reldir) < len(dir) {
x = strings.Replace(x, " "+dir, " "+reldir, -1)
x = strings.Replace(x, "\n"+dir, "\n"+reldir, -1)
for _, p := range paths {
rel, err := filepath.Rel(pwd, p)
if err == nil && len(rel) < len(p) {
p = rel
}
out = append(out, p)
}
return x[1:]
return out
}
// errPrintedOutput is a special error indicating that a command failed

View File

@ -25,6 +25,6 @@ func runFix(cmd *Command, args []string) {
// Use pkg.gofiles instead of pkg.Dir so that
// the command only applies to this package,
// not to packages in subdirectories.
run(stringList("gofix", pkg.gofiles))
run(stringList("gofix", relPaths(pkg.gofiles)))
}
}

View File

@ -26,7 +26,7 @@ func runFmt(cmd *Command, args []string) {
// Use pkg.gofiles instead of pkg.Dir so that
// the command only applies to this package,
// not to packages in subdirectories.
run(stringList("gofmt", "-I", "w", pkg.gofiles))
run(stringList("gofmt", "-l", "-w", relPaths(pkg.gofiles)))
}
}

View File

@ -25,6 +25,6 @@ func runVet(cmd *Command, args []string) {
// Use pkg.gofiles instead of pkg.Dir so that
// the command only applies to this package,
// not to packages in subdirectories.
run("govet", pkg.gofiles)
run("govet", relPaths(pkg.gofiles))
}
}