---
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: platform-apps
  namespace: argocd
spec:
  generators:
  - git:
      repoURL: https://git.unkin.net/unkin/argocd-apps
      revision: HEAD
      directories:
      - path: apps/overlays/*/authentik
      - path: apps/overlays/*/artifactapi
      - path: apps/overlays/*/bind-system
      - path: apps/overlays/*/bind-internal
      - path: apps/overlays/*/bind-external
      - path: apps/overlays/*/age-api
      - path: apps/overlays/*/cattle-system
      - path: apps/overlays/*/cert-manager
      - path: apps/overlays/*/certificates
      - path: apps/overlays/*/cephrgw-system
      - path: apps/overlays/*/cnpg-system
      - path: apps/overlays/*/consul
      - path: apps/overlays/*/dhcp-system
      - path: apps/overlays/*/elastic-system
      - path: apps/overlays/*/encapi
      - path: apps/overlays/*/externaldns
      - path: apps/overlays/*/ghp
      - path: apps/overlays/*/gitea
      - path: apps/overlays/*/grafana-system
      - path: apps/overlays/*/inteldeviceplugins-system
      - path: apps/overlays/*/jfrog
      - path: apps/overlays/*/k8up-system
      - path: apps/overlays/*/kanidm
      - path: apps/overlays/*/netbox
      - path: apps/overlays/*/node-feature-discovery
      - path: apps/overlays/*/pdbmux
      - path: apps/overlays/*/priority-classes
      - path: apps/overlays/*/puppet
      - path: apps/overlays/*/purelb
      - path: apps/overlays/*/reflector-system
      - path: apps/overlays/*/reloader-system
      - path: apps/overlays/*/repospawner
      - path: apps/overlays/*/reposync
      - path: apps/overlays/*/traefik-system
      - path: apps/overlays/*/valkey-operator-system
      - path: apps/overlays/*/vm-system
      - path: apps/overlays/*/vpa-system
      - path: apps/overlays/*/vault
      - path: apps/overlays/*/vso-system
      - path: apps/overlays/*/woodpecker
  template:
    metadata:
      name: 'platform-{{path[3]}}'  # cluster-app format (e.g., platform-reflector-system)
    spec:
      project: platform
      source:
        repoURL: https://git.unkin.net/unkin/argocd-apps
        targetRevision: HEAD
        path: '{{path}}'
      destination:
        server: https://kubernetes.default.svc
        namespace: '{{path[3]}}'  # Use directory name as namespace
      ignoreDifferences:
      - group: ""
        kind: ConfigMap
        name: kanidm-repl-certs
        jsonPointers:
        - /data
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
        syncOptions:
        - ServerSideApply=true
