version: revert the filepath change from earlier commit
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.
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 {
+ 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") {
- ret = filepath.Base(strings.TrimPrefix(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
}
