summary history files

main.go
package main

import (
	"context"
	"embed"
	"flag"
	"os"
	"path"

	"kd/backend/config"
	"kd/backend/logwrap"
	"kd/backend/services"

	"github.com/wailsapp/wails/v2"
	wailslogger "github.com/wailsapp/wails/v2/pkg/logger"
	"github.com/wailsapp/wails/v2/pkg/options"
	"github.com/wailsapp/wails/v2/pkg/options/assetserver"
)

//go:embed all:frontend/dist
var assets embed.FS

func main() {
	var err error
	logger := logwrap.New("logger", os.Stdout, true)
	logger.SetLevel(logwrap.INFO)
	wailsLogLevel := wailslogger.INFO

	var (
		debugFlag = flag.Bool("debug", false, "debug")
		traceFlag = flag.Bool("trace", false, "trace")
	)
	flag.Parse()

	if *debugFlag {
		logger.SetLevel(logwrap.DEBUG)
		wailsLogLevel = wailslogger.DEBUG
	}

	if *traceFlag {
		wailsLogLevel = wailslogger.TRACE
	}

	kubeConfigPath, ok := os.LookupEnv("KUBECONFIG")
	if !ok {
		homeDir, err := os.UserHomeDir()
		if err != nil {
			logger.Error(err.Error())
			os.Exit(1)
		}
		kubeConfigPath = path.Join(homeDir, ".kube", "config.yaml")
	}

	configOpts := []config.OptFunc{
		config.WithDebug(*debugFlag),
	}

	conf, err := config.NewConfig(kubeConfigPath, configOpts...)
	if err != nil {
		logger.Error(err.Error())
		os.Exit(1)
	}

	clusterSvc := services.Cluster()
	secretsSvc := services.Secrets()
	persistentVolumeClaimsSvc := services.PersistentVolumeClaims()
	persistentVolumesSvc := services.PersistentVolumes()
	httpsrvSvc := services.Httpsrv()

	err = wails.Run(&options.App{
		Title:  "kd",
		Width:  1024,
		Height: 768,
		AssetServer: &assetserver.Options{
			Assets: assets,
		},
		BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1},
		OnStartup: func(ctx context.Context) {
			clusterSvc.Start(ctx, conf, logger)
			secretsSvc.Start(ctx, conf, logger)
			persistentVolumeClaimsSvc.Start(ctx, conf, logger)
			persistentVolumesSvc.Start(ctx, conf, logger)
			httpsrvSvc.Start(ctx, conf, logger)
		},
		Bind: []interface{}{
			clusterSvc,
			secretsSvc,
			httpsrvSvc,
			persistentVolumeClaimsSvc,
			persistentVolumesSvc,
		},
		LogLevel: wailsLogLevel,
	})
	if err != nil {
		logger.Error(err.Error())
		os.Exit(1)
	}
}