content: [tools]
  # =================================================================================================
  # Project Tools
  # =================================================================================================
  go = "1.25.2"
  "aqua:golangci/golangci-lint" = "2.5.0"
  "aqua:goreleaser/goreleaser" = "2.12.5"
  "aqua:kubernetes/kubectl" = "1.33.1"
  
  
  # =================================================================================================
  # Misc Tools
  # =================================================================================================
  "aqua:kubernetes/minikube" = "latest"
  "aqua:helm/helm" = "latest"
  "aqua:derailed/k9s" = "latest"
  
  
  # =================================================================================================
  # CI Tools -> major versions
  # =================================================================================================
  "npm:@commitlint/cli" = "20"
  "aqua:rhysd/actionlint" = "1"
  "pipx:yamllint" = "v1"
  
  # =================================================================================================
  # TASKS -> Kube Cluster
  # =================================================================================================
  [tasks."kube:up"]
  description = "Create the test cluster."
  run = [
      "minikube start",
      "minikube addons enable metallb",
      "minikube addons enable ingress",
      "minikube addons enable metrics-server",
      "minikube addons enable dashboard",
  ]
  
  [tasks."kube:down"]
  description = "Tear down the minikube cluster"
  run = "minikube delete"
  
  
  # =================================================================================================
  # TASKS -> Kube Deploy
  # =================================================================================================
  [tasks."kube:deploy"]
  description = "Deploy the external-dns-mikrotik webhook to the test cluster."
  run = [
      "kubectl create ns external-dns || true",
      "kubectl delete secret --namespace external-dns mikrotik-credentials || true",
      "kubectl create secret generic --namespace external-dns --from-env-file=.env mikrotik-credentials || true",
      "helm repo add external-dns https://kubernetes-sigs.github.io/external-dns && helm repo update",
      "helm upgrade --install --namespace external-dns external-dns external-dns/external-dns -f example/values.yaml",
  ]
  
  [tasks."kube:clean"]
  description = "Remove the external-dns-mikrotik webhook from the test cluster."
  run = [
      "kubectl delete ns external-dns || true",
      "kubectl delete -f example/records || true",
      "kubectl delete -f example/ingress || true",
  ]
  
  
  [tasks."kube:logs"]
  description = "Fetch the logs from the external-dns-mikrotik webhook container to a local file."
  run = "kubectl -n external-dns logs deployments/external-dns-mikrotik webhook > logs.json"
  
  
  # =================================================================================================
  # TASKS -> GO
  # =================================================================================================
  [tasks."go:release"]
  description = "Run goreleaser in snapshot mode."
  run = "goreleaser release --snapshot --clean"
  
  
  [tasks."go:test"]
  description = "Run tests."
  run = "go test -v ./... -race -covermode=atomic"
  
  
  [tasks."go:lint"]
  description = "Run golangci-lint in fix mode."
  run = "golangci-lint run --fix"
  