From 2072dcc1270ed9caf8788700f4872a18f110ba25 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Thu, 30 Jul 2020 07:59:43 -0700 Subject: [PATCH] version: revert the filepath change from earlier commit f81233524fddeec450940af8dc1a0dd8841bf28c changed a use of package 'path' to 'filepath'. Restore it back to 'path', with a comment. Also, use the os.Executable-based fallback name in the case where the binary itself doesn't have Go module information. That was overlooked in the original code. --- version/cmdname.go | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/version/cmdname.go b/version/cmdname.go index a72eb9c21..a7899ed9f 100644 --- a/version/cmdname.go +++ b/version/cmdname.go @@ -8,6 +8,7 @@ package version import ( "os" + "path" "path/filepath" "strings" @@ -22,23 +23,27 @@ func CmdName() string { if err != nil { return "cmd" } + + // fallbackName, the lowercase basename of the executable, is what we return if + // we can't find the Go module metadata embedded in the file. + fallbackName := filepath.Base(strings.TrimSuffix(strings.ToLower(e), ".exe")) + var ret string v, err := version.ReadExe(e) if err != nil { - ret = strings.TrimSuffix(strings.ToLower(e), ".exe") - ret = filepath.Base(ret) - } else { - // v is like: - // "path\ttailscale.com/cmd/tailscale\nmod\ttailscale.com\t(devel)\t\ndep\tgithub.com/apenwarr/fixconsole\tv0.0.0-20191012055117-5a9f6489cc29\th1:muXWUcay7DDy1/hEQWrYlBy+g0EuwT70sBHg65SeUc4=\ndep\tgithub.... - for _, line := range strings.Split(v.ModuleInfo, "\n") { - if strings.HasPrefix(line, "path\t") { - ret = filepath.Base(strings.TrimPrefix(line, "path\t")) - break - } + return fallbackName + } + // v is like: + // "path\ttailscale.com/cmd/tailscale\nmod\ttailscale.com\t(devel)\t\ndep\tgithub.com/apenwarr/fixconsole\tv0.0.0-20191012055117-5a9f6489cc29\th1:muXWUcay7DDy1/hEQWrYlBy+g0EuwT70sBHg65SeUc4=\ndep\tgithub.... + for _, line := range strings.Split(v.ModuleInfo, "\n") { + if strings.HasPrefix(line, "path\t") { + goPkg := strings.TrimPrefix(line, "path\t") // like "tailscale.com/cmd/tailscale" + ret = path.Base(goPkg) // goPkg is always forward slashes; use path, not filepath + break } } if ret == "" { - return "cmd" + return fallbackName } return ret }