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  }