package helm_client

import (
	"context"
	"kube-forge/internal/config"
	"kube-forge/internal/logging"

	go_helm_client "github.com/mittwald/go-helm-client"
)

func InstallChart(chartSpec go_helm_client.ChartSpec) {
	helmClient := config.GetHelmClient(chartSpec.Namespace)
	_, error := helmClient.GetRelease(chartSpec.ReleaseName)
	if error != nil {
		logging.Log.Infof("Installing %s", chartSpec.ChartName)
	} else {
		logging.Log.Infof("Upgrading %s", chartSpec.ChartName)
	}
	if _, err := helmClient.InstallOrUpgradeChart(context.Background(), &chartSpec, nil); err != nil {
		panic(err)
	}
}

func DeleteChart(chartSpec go_helm_client.ChartSpec) {
	helmClient := config.GetHelmClient(chartSpec.Namespace)
	_, error := helmClient.GetRelease(chartSpec.ReleaseName)
	if error != nil {
		return
	}
	logging.Log.Warnf("Uninstalling %s", chartSpec.ChartName)
	helmClient.UninstallRelease(&chartSpec)
}
