locals { sorted-organisation-names = reverse(distinct(sort([for org in var.organisations: org.name]))) sorted-organisations = flatten([ for name in local.sorted-organisation-names: [ for org in var.organisations: merge({ "stages" = [] "datasets" = [] }, org) if org.name == name ] ]) } resource "kubectl_manifest" "organisations" { count = length(local.sorted-organisations) yaml_body = <<-EOF apiVersion: "vynil.solidite.fr/v1" kind: "Install" metadata: name: "org-${local.sorted-organisations[count.index].name}" namespace: "${var.namespace}" labels: ${jsonencode(local.common_labels)} spec: distrib: "${var.distributions.domain}" category: "share" component: "organisation" options: ${jsonencode(merge( local.global, { "stages" = [] "datasets" = [] "haveGitea" = var.haveGitea "haveTekton" = var.haveTekton "haveFlux" = var.haveFlux "autoCD" = var.autoCD "gitea_ssh_prefix" = var.gitea_ssh_prefix "gitea_ssh_port" = var.gitea_ssh_port }, { for k, v in local.sorted-organisations[count.index] : k => v if !contains(["name"], k) } ))} EOF }