package config

type Cicd struct {
	Enabled bool `yaml:"enabled"`
	ArgoCd  struct {
		ChartRef      string `yaml:"chart_ref" env-default:"kube-forge/argo-cd"`
		ChartVersion  string `yaml:"chart_version" env-default:"6.7.10"`
		AdminPassword string
		Ha            struct {
			Enabled     bool `yaml:"enabled"`
			Autoscaling bool `yaml:"autoscaling"`
		} `yaml:"ha"`
		Expose struct {
			Type          string `yaml:"type"`
			Domain        string `yaml:"domain"`
			Path          string `yaml:"path" env-default:"/"`
			NodePortHttp  int    `yaml:"node_port_http" env-default:"30005"`
			NodePortHttps int    `yaml:"node_port_https" env-default:"30006"`
			Tls           struct {
				Enabled bool `yaml:"enabled"`
			} `yaml:"tls"`
		} `yaml:"expose"`
		Repositories interface{} `yaml:"repositories"`
		Rbac         struct {
			AdditionalPolicies string `yaml:"additional_policies"`
		} `yaml:"argo_cd"`
		ServiceIngress struct {
			ChartRef     string `yaml:"chart_ref" env-default:"kube-forge/service-ingress"`
			ChartVersion string `yaml:"chart_version" env-default:"0.1.0"`
		} `yaml:"service_ingress"`
		Global struct {
			Image string `yaml:"image" env-default:"quay.io/argoproj/argocd"`
			Tag   string `yaml:"tag" env-default:"latest"`
		} `yaml:"global"`
		Server struct {
			Image string `yaml:"image" env-default:"quay.io/argoproj/argocd"`
			Tag   string `yaml:"tag" env-default:"latest"`
		} `yaml:"server"`
		Redis struct {
			Image    string `yaml:"image" env-default:"public.ecr.aws/docker/library/redis"`
			Tag      string `yaml:"tag" env-default:"7.2.4-alpine"`
			Exporter struct {
				Image string `yaml:"image" env-default:"public.ecr.aws/bitnami/redis-exporter"`
				Tag   string `yaml:"tag" env-default:"1.58.0"`
			} `yaml:"exporter"`
		} `yaml:"redis"`
		ApplicationSet struct {
			Image string `yaml:"image" env-default:"quay.io/argoproj/argocd"`
			Tag   string `yaml:"tag" env-default:"latest"`
		} `yaml:"application_set"`
		Dex struct {
			Image string `yaml:"image" env-default:"ghcr.io/dexidp/dex"`
			Tag   string `yaml:"tag" env-default:"v2.38.0"`
		} `yaml:"dex"`
		RepoServer struct {
			Image string `yaml:"image" env-default:"quay.io/argoproj/argocd"`
			Tag   string `yaml:"tag" env-default:"latest"`
		} `yaml:"repo_server"`
		Notifications struct {
			Image string `yaml:"image" env-default:"quay.io/argoproj/argocd"`
			Tag   string `yaml:"tag" env-default:"latest"`
		} `yaml:"notifications"`
		Controller struct {
			Image string `yaml:"image" env-default:"quay.io/argoproj/argocd"`
			Tag   string `yaml:"tag" env-default:"latest"`
		} `yaml:"controller"`
	} `yaml:"argo_cd"`
	UpdatesOperator struct {
		ChartRef     string `yaml:"chart_ref" env-default:"kube-forge/keel"`
		ChartVersion string `yaml:"chart_version" env-default:"1.0.3"`
		Enabled      bool   `yaml:"enabled"`
		Image        string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/keelhq/keel"`
		Tag          string `yaml:"tag" env-default:"latest"`
	} `yaml:"updates_operator"`
	Rollouts struct {
		ChartRef     string `yaml:"chart_ref" env-default:"kube-forge/argo-rollouts"`
		ChartVersion string `yaml:"chart_version" env-default:"2.35.1"`
		Enabled      bool   `yaml:"enabled"`
		Registry     string `yaml:"registry" env-default:"quay.io"`
		Repository   string `yaml:"repository" env-default:"argoproj/argo-rollouts"`
		Tag          string `yaml:"tag" env-default:"latest"`
		Ha           struct {
			Enabled bool `yaml:"enabled"`
		} `yaml:"ha"`
		Expose struct {
			Type     string `yaml:"type"`
			NodePort int    `yaml:"node_port" env-default:"30010"`
		} `yaml:"expose"`
		Controller struct {
		} `yaml:"controller"`
		Dashboard struct {
		} `yaml:"dashboard"`
	} `yaml:"rollouts"`
}
