github.com/telepresenceio/telepresence/v2@v2.20.0-pro.6.0.20240517030216-236ea954e789/cmd/traffic/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "os" 7 "path/filepath" 8 "strings" 9 10 "github.com/datawire/dlib/dlog" 11 "github.com/telepresenceio/telepresence/v2/cmd/traffic/cmd/agent" 12 "github.com/telepresenceio/telepresence/v2/cmd/traffic/cmd/agentinit" 13 "github.com/telepresenceio/telepresence/v2/cmd/traffic/cmd/manager" 14 "github.com/telepresenceio/telepresence/v2/pkg/log" 15 ) 16 17 func main() { 18 cmds := map[string]func(ctx context.Context, args ...string) error{ 19 "agent": agent.Main, 20 "agent-init": agentinit.Main, 21 "manager": manager.Main, 22 } 23 24 var name string 25 var args []string 26 if len(os.Args) > 1 { 27 name = os.Args[1] 28 args = os.Args[2:] 29 } else { 30 argv0 := filepath.Base(os.Args[0]) 31 name = strings.TrimPrefix(argv0, "traffic-") 32 args = os.Args[1:] 33 if _, ok := cmds[name]; !ok || !strings.HasPrefix(argv0, "traffic-") { 34 name = "manager" 35 } 36 } 37 38 if cmd, cmdOK := cmds[name]; cmdOK { 39 ctx := context.Background() 40 ctx = log.MakeBaseLogger(ctx, os.Getenv("LOG_LEVEL")) 41 if err := cmd(ctx, args...); err != nil { 42 dlog.Errorf(ctx, "quit: %v", err) 43 os.Exit(1) 44 } 45 } else { 46 fmt.Println("traffic: unknown command:", name) 47 os.Exit(127) 48 } 49 }