package main import ( "context" "flag" "log" "os" "git.netflux.io/rob/kubectl-persistent-logger/logs" "k8s.io/client-go/dynamic" "k8s.io/client-go/kubernetes" clientconfig "sigs.k8s.io/controller-runtime/pkg/client/config" ) func main() { var ( container string strictExist bool ) flag.StringVar(&container, "container", "", "name of a specific container") flag.BoolVar(&strictExist, "strict", false, "require deployment to exist on launch") flag.Parse() var params logs.WatcherParams switch len(flag.Args()) { case 1: // TODO: handle type/name style flag.Usage() os.Exit(1) case 2: kind, err := logs.ParseType(flag.Arg(0)) if err != nil { log.Fatal(err) } params = logs.WatcherParams{ Type: kind, Name: flag.Arg(1), Namespace: "default", } default: flag.Usage() os.Exit(1) } cfg, err := clientconfig.GetConfig() if err != nil { log.Fatal(err) } clientset, err := kubernetes.NewForConfig(cfg) if err != nil { log.Fatal(err) } dynamicclient, err := dynamic.NewForConfig(cfg) if err != nil { log.Fatal(err) } ctx := context.Background() watcher := logs.NewWatcher( params, logs.KubernetesClient{Typed: clientset, Untyped: dynamicclient}, logs.NewPodWatcher, os.Stdout, ) if err := watcher.Watch(ctx); err != nil { log.Fatal(err) } }