@ -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
}