From 48e5f4ff88ecc63ebf2927cc6537e537c2b269f3 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Tue, 26 Apr 2022 06:09:02 -0700 Subject: [PATCH] cmd/tailscale/cli: add 'debug stat' subcommand For debugging what's visible inside the macOS sandbox. But could also be useful for giving users portable commands during debugging without worrying about which OS they're on. Signed-off-by: Brad Fitzpatrick --- cmd/tailscale/cli/debug.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/cmd/tailscale/cli/debug.go b/cmd/tailscale/cli/debug.go index 5f879d4a7..dcbe47afa 100644 --- a/cmd/tailscale/cli/debug.go +++ b/cmd/tailscale/cli/debug.go @@ -69,6 +69,11 @@ var debugCmd = &ffcli.Command{ Exec: runEnv, ShortHelp: "print cmd/tailscale environment", }, + { + Name: "stat", + Exec: runStat, + ShortHelp: "stat a file", + }, { Name: "hostinfo", Exec: runHostinfo, @@ -284,6 +289,28 @@ func runEnv(ctx context.Context, args []string) error { return nil } +func runStat(ctx context.Context, args []string) error { + for _, a := range args { + fi, err := os.Lstat(a) + if err != nil { + fmt.Printf("%s: %v\n", a, err) + continue + } + fmt.Printf("%s: %v, %v\n", a, fi.Mode(), fi.Size()) + if fi.IsDir() { + ents, _ := os.ReadDir(a) + for i, ent := range ents { + if i == 25 { + fmt.Printf(" ...\n") + break + } + fmt.Printf(" - %s\n", ent.Name()) + } + } + } + return nil +} + func runHostinfo(ctx context.Context, args []string) error { hi := hostinfo.New() j, _ := json.MarshalIndent(hi, "", " ")