version: fix CmdName on the tailscale-ipn.exe binary

Don't return "wg64", "wg32", etc.

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
pull/2845/head
Brad Fitzpatrick 3 years ago committed by Brad Fitzpatrick
parent 93c2882a2f
commit 2db877caa3

@ -26,13 +26,16 @@ func CmdName() string {
if err != nil {
return "cmd"
}
return cmdName(e)
}
func cmdName(exe string) string {
// 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"))
fallbackName := filepath.Base(strings.TrimSuffix(strings.ToLower(exe), ".exe"))
var ret string
info, err := findModuleInfo(e)
info, err := findModuleInfo(exe)
if err != nil {
return fallbackName
}
@ -45,6 +48,12 @@ func CmdName() string {
break
}
}
if strings.HasPrefix(ret, "wg") && fallbackName == "tailscale-ipn" {
// The tailscale-ipn.exe binary for internal build system packaging reasons
// has a path of "tailscale.io/win/wg64", "tailscale.io/win/wg32", etc.
// Ignore that name and use "tailscale-ipn" instead.
return fallbackName
}
if ret == "" {
return fallbackName
}

@ -5,6 +5,7 @@
package version
import (
"flag"
"os/exec"
"path/filepath"
"runtime"
@ -36,3 +37,18 @@ func exe() string {
}
return ""
}
var findModuleInfoName = flag.String("module-info-file", "", "if non-empty, test findModuleInfo against this filename")
func TestFindModuleInfoManual(t *testing.T) {
exe := *findModuleInfoName
if exe == "" {
t.Skip("skipping without --module-info-file filename")
}
cmd := cmdName(exe)
mod, err := findModuleInfo(exe)
if err != nil {
t.Fatal(err)
}
t.Logf("Got %q from: %s", cmd, mod)
}

Loading…
Cancel
Save