func main()

in cmd/aks-node-viewer/main.go [42:101]


func main() {
	flags, err := ParseFlags()
	if err != nil {
		if errors.Is(err, flag.ErrHelp) {
			os.Exit(0)
		}
		log.Fatalf("cannot parse flags: %v", err)
	}

	if flags.ShowAttribution {
		fmt.Println(attribution)
		os.Exit(0)
	}

	if flags.Version {
		fmt.Printf("aks-node-viewer version %s\n", version)
		fmt.Printf("commit: %s\n", commit)
		fmt.Printf("built at: %s\n", date)
		fmt.Printf("built by: %s\n", builtBy)
		os.Exit(0)
	}

	cs, err := client.Create(flags.Kubeconfig, flags.Context)
	if err != nil {
		log.Fatalf("creating client, %s", err)
	}
	ctx, cancel := context.WithCancel(context.Background())

	pprov := pricing.NewProvider(ctx, pricing.NewAPI(), "westus2")
	updateStarted := time.Now()
	for {
		if pprov.OnDemandLastUpdated().After(updateStarted) {
			break
		}
		log.Println("waiting on pricing update...")
		time.Sleep(1 * time.Second)
	}
	m := model.NewUIModel(strings.Split(flags.ExtraLabels, ","))

	m.SetResources(strings.FieldsFunc(flags.Resources, func(r rune) bool { return r == ',' }))

	var nodeSelector labels.Selector
	if ns, err := labels.Parse(flags.NodeSelector); err != nil {
		log.Fatalf("parsing node selector: %s", err)
	} else {
		nodeSelector = ns
	}

	monitorSettings := &monitorSettings{
		clientset:    cs,
		model:        m,
		nodeSelector: nodeSelector,
		pricing:      pprov,
	}
	startMonitor(ctx, monitorSettings)
	if _, err := tea.NewProgram(m, tea.WithAltScreen()).Run(); err != nil {
		log.Fatalf("error running tea: %s", err)
	}
	cancel()
}