{{- define "kubezero-app.app" }}
{{- $name := regexReplaceAll "kubezero/templates/([a-z-]*)..*" .Template.Name "${1}" }}

{{- if index .Values $name "enabled" }}
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: {{ $name }}
  namespace: argocd
  labels:
    {{- include "kubezero-lib.labels" . | nindent 4 }}
  {{- with ( index .Values $name "annotations" ) }}
  annotations:
    {{- toYaml . | nindent 4 }}
  {{- end }}
  {{- if not ( index .Values $name "retain" ) }}
  finalizers:
    - resources-finalizer.argocd.argoproj.io
  {{- end }}
spec:
  project: kubezero

  source:
    chart: {{ default (print "kubezero-" $name) (index .Values $name "chart") }}
    repoURL: {{ default "https://cdn.zero-downtime.net/charts" (index .Values $name "repository") }}
    targetRevision: {{ default "HEAD" ( index .Values $name "targetRevision" ) | quote }}
    helm:
      # add with 1.32
      #skipTests: true
      valuesObject:
        {{- include (print $name "-values") $ | nindent 8 }}

  destination:
    server: "https://kubernetes.default.svc"
    namespace: {{ default "kube-system" ( index .Values $name "namespace" ) }}

  revisionHistoryLimit: 2
  syncPolicy:
    automated:
      prune: true
    syncOptions:
      - ServerSideApply=true
      - CreateNamespace=true
      - ApplyOutOfSyncOnly=true
{{- include (print $name "-argo") $ }}
{{- end }}

{{- end }}