mirror of
https://github.com/tailscale/tailscale.git
synced 2025-04-08 17:24:57 +00:00
cmd/tailscale/cli: delete ActLikeCLI
It's since been rewritten in Swift. #cleanup Change-Id: I0860d681e8728697804ce565f63c5613b8b1088c Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
30e0156430
commit
ca45fe2d46
@ -14,7 +14,6 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strconv"
|
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"text/tabwriter"
|
"text/tabwriter"
|
||||||
@ -47,52 +46,6 @@ func outln(a ...any) {
|
|||||||
fmt.Fprintln(Stdout, a...)
|
fmt.Fprintln(Stdout, a...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ActLikeCLI reports whether a GUI application should act like the
|
|
||||||
// CLI based on os.Args, GOOS, the context the process is running in
|
|
||||||
// (pty, parent PID), etc.
|
|
||||||
func ActLikeCLI() bool {
|
|
||||||
// This function is only used on macOS.
|
|
||||||
if runtime.GOOS != "darwin" {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// Escape hatch to let people force running the macOS
|
|
||||||
// GUI Tailscale binary as the CLI.
|
|
||||||
if v, _ := strconv.ParseBool(os.Getenv("TAILSCALE_BE_CLI")); v {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// If our parent is launchd, we're definitely not
|
|
||||||
// being run as a CLI.
|
|
||||||
if os.Getppid() == 1 {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// Xcode adds the -NSDocumentRevisionsDebugMode flag on execution.
|
|
||||||
// If present, we are almost certainly being run as a GUI.
|
|
||||||
for _, arg := range os.Args {
|
|
||||||
if arg == "-NSDocumentRevisionsDebugMode" {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Looking at the environment of the GUI Tailscale app (ps eww
|
|
||||||
// $PID), empirically none of these environment variables are
|
|
||||||
// present. But all or some of these should be present with
|
|
||||||
// Terminal.all and bash or zsh.
|
|
||||||
for _, e := range []string{
|
|
||||||
"SHLVL",
|
|
||||||
"TERM",
|
|
||||||
"TERM_PROGRAM",
|
|
||||||
"PS1",
|
|
||||||
} {
|
|
||||||
if os.Getenv(e) != "" {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func newFlagSet(name string) *flag.FlagSet {
|
func newFlagSet(name string) *flag.FlagSet {
|
||||||
onError := flag.ExitOnError
|
onError := flag.ExitOnError
|
||||||
if runtime.GOOS == "js" {
|
if runtime.GOOS == "js" {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user