package helm

import (
	"dagger.io/dagger"
	"universe.dagger.io/docker"
)

#Install: {
	// Name of your release
	name:       string | *""
	kubeconfig: dagger.#Secret
	source:     *"repository" | "URL"
	{
		source:     "repository"
		chart:      string
		repoName:   string
		repository: string
		run: {
			env: {
				CHART:      chart
				REPO_NAME:  repoName
				REPOSITORY: repository
			}
			_script: #"""
				helm repo add $REPO_NAME $REPOSITORY
				helm repo update
				helm install $NAME $REPO_NAME/$CHART $GENERATE_NAME
				"""#
		}
	} | {
		source: "URL"
		URL:    string
		run: {
			env: "URL": URL
			_script: #"""
				helm install $NAME $URL $GENERATE_NAME
				"""#
		}
	}

	_base: #Image
	run:   docker.#Run & {
		input: _base.output
		env: {
			NAME:          name
			GENERATE_NAME: _generateName
		}
		mounts: "/root/.kube/config": {
			dest:     "/root/.kube/config"
			type:     "secret"
			contents: kubeconfig
		}
		entrypoint: ["/bin/sh"]
		command: {
			name: "-c"
			args: [run._script]
		}
	}

	_generateName: string | *""
	if name == "" {
		_generateName: "--generate-name"
	}
}
