├── .gitignore ├── .github ├── CODEOWNERS └── workflows │ ├── tflint.yml │ └── tfsec.yml ├── terraform ├── .gitignore └── github │ ├── provider.tf │ ├── backend.tf │ ├── versions.tf │ ├── README.md │ ├── memberships.tf │ ├── collaborators.tf │ ├── .terraform.lock.hcl │ ├── teams.tf │ └── repositories.tf ├── .editorconfig ├── README.md ├── renovate.json └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | .envrc 2 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @asdf-community/asdf-infrastructure 2 | -------------------------------------------------------------------------------- /terraform/.gitignore: -------------------------------------------------------------------------------- 1 | .terraform/ 2 | *.tfstate 3 | *.tfstate.* 4 | crash.log 5 | -------------------------------------------------------------------------------- /terraform/github/provider.tf: -------------------------------------------------------------------------------- 1 | provider "github" { 2 | owner = "asdf-community" 3 | } 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # infrastructure 2 | 3 | ​This repository contains IaC (Infrastructure as Code) resources needed to 4 | maintain the infrastructures for the asdf-community project. 5 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:recommended", 5 | "helpers:pinGitHubActionDigests" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /terraform/github/backend.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | backend "remote" { 3 | organization = "asdf-community" 4 | 5 | workspaces { 6 | name = "github" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /terraform/github/versions.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | required_version = ">= 1.0.0" 3 | 4 | required_providers { 5 | github = { 6 | source = "integrations/github" 7 | version = "6.9.0" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /terraform/github/README.md: -------------------------------------------------------------------------------- 1 | # GitHub 2 | 3 | This project maintains the mapping of users to groups and groups to 4 | repositories. It's also the canonical place to enable or disable features for a 5 | specific repository and to set its tagline. 6 | -------------------------------------------------------------------------------- /.github/workflows/tflint.yml: -------------------------------------------------------------------------------- 1 | name: TFLint 2 | 3 | on: 4 | - pull_request 5 | - push 6 | 7 | jobs: 8 | tflint: 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - name: Checkout tree 13 | uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 14 | 15 | - name: Set-up TFLint 16 | uses: terraform-linters/setup-tflint@4cb9feea73331a35b422df102992a03a44a3bb33 # v6.2.1 17 | 18 | - name: Run TFLint 19 | run: tflint --recursive --format=compact 20 | -------------------------------------------------------------------------------- /.github/workflows/tfsec.yml: -------------------------------------------------------------------------------- 1 | name: tfsec 2 | 3 | on: 4 | - pull_request 5 | - push 6 | 7 | jobs: 8 | tfsec: 9 | permissions: 10 | actions: read 11 | contents: read 12 | security-events: write 13 | 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - name: Checkout tree 18 | uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 19 | 20 | - name: Run tfsec 21 | uses: aquasecurity/tfsec-sarif-action@21ded20e8ca120cd9d3d6ab04ef746477542a608 # v0.1.4 22 | with: 23 | sarif_file: tfsec.sarif 24 | 25 | - name: Upload SARIF file 26 | uses: github/codeql-action/upload-sarif@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 27 | with: 28 | sarif_file: tfsec.sarif 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | ISC License 2 | 3 | Copyright (c) 2020, Sora Morimoto 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 | -------------------------------------------------------------------------------- /terraform/github/memberships.tf: -------------------------------------------------------------------------------- 1 | locals { 2 | github_memberships = { 3 | admins = [ 4 | "smorimoto", 5 | ] 6 | 7 | members = [ 8 | "looztra", 9 | "marciogm", 10 | "michaelstephens", 11 | "missingcharacter", 12 | "nverno", 13 | "nzws", 14 | "superbrothers", 15 | ] 16 | } 17 | } 18 | 19 | resource "github_membership" "memberships" { 20 | for_each = { for i in flatten( 21 | [for role, usernames in local.github_memberships : 22 | [for username in usernames : role == "admins" ? { 23 | username = username, 24 | role = "admin", 25 | } : { 26 | username = username, 27 | role = "member", 28 | }] 29 | ]) : format("%s.%s", i.role, i.username) => i 30 | } 31 | 32 | username = each.value.username 33 | role = each.value.role 34 | } 35 | -------------------------------------------------------------------------------- /terraform/github/collaborators.tf: -------------------------------------------------------------------------------- 1 | locals { 2 | github_repository_collaborators = { 3 | asdf-crystal = [ 4 | { 5 | username = "mgxm", 6 | permission = "push", 7 | } 8 | ] 9 | 10 | asdf-gleam = [ 11 | { 12 | username = "lpil", 13 | permission = "push", 14 | } 15 | ] 16 | 17 | asdf-ubuntu = [ 18 | { 19 | username = "rodfersou", 20 | permission = "push", 21 | } 22 | ] 23 | } 24 | } 25 | 26 | resource "github_repository_collaborator" "repository_collaborator" { 27 | for_each = { for i in flatten( 28 | [for repository, collaborators in local.github_repository_collaborators : 29 | [for collaborator in collaborators : { 30 | repository = repository, 31 | username = collaborator.username, 32 | permission = collaborator.permission, 33 | }] 34 | ]) : format("%s.%s", i.repository, i.username) => i 35 | } 36 | 37 | repository = each.value.repository 38 | username = each.value.username 39 | permission = each.value.permission 40 | } 41 | -------------------------------------------------------------------------------- /terraform/github/.terraform.lock.hcl: -------------------------------------------------------------------------------- 1 | # This file is maintained automatically by "terraform init". 2 | # Manual edits may be lost in future updates. 3 | 4 | provider "registry.terraform.io/integrations/github" { 5 | version = "6.9.0" 6 | constraints = "6.9.0" 7 | hashes = [ 8 | "h1:IgkP3rlzxLFmnZBr+ua7nPMWJ0ocFbuGzQPlcBg7GcU=", 9 | "h1:LB2y3kbw1o8kVUU/qlU0dpM5MY1AMWxO5rMXW8WLlDM=", 10 | "h1:NkAsPLXmWq4DXEucavnK3sUq0WTHymiUgeJ6VBc83q8=", 11 | "h1:PHb2jf8dfZFMvwUToHSDzaVxKXZcIlE0Zdng6MfsfTw=", 12 | "h1:PM5/MGt8wakzcnNBzrArfpRA6rcJA2X1zCtX+AXOiD8=", 13 | "h1:TZh2ryQYxXFTLW6861U0GWmDQllwWwKGlmVlJ4H80Xs=", 14 | "h1:ZHy/5g51pA3NInxkEExR1rpIUgQSFznLQiroNUETy0Y=", 15 | "h1:aR2d6pc2RFkBdASR54HJ+/FuLpux923SKitbu0Bjit4=", 16 | "h1:bYODY+MpUpp983X/c3i2mKgovx/5nMGpsKiHEjYe6E8=", 17 | "h1:dEM5mAP3EioVxCIFJ1JYBgmHmSLEMUwnozqJe3einUQ=", 18 | "h1:r+nmugblBv7TyKnUCBPW+MeY52scodIwCUj+A/xJZzs=", 19 | "h1:tVDCbv/t67pHiRWs7CeASyM1of322tCiXD7FH3t22w8=", 20 | "h1:wr5Hd2st9P5if5aBCdd3UNpu8syLKG7jGzgfrI0fh/8=", 21 | "h1:yMQBQZCusrW5AvBZQKn1jr9iQ12BQXdaCfURR0TJz60=", 22 | "zh:0136ce1ca9e438c6af2d2c46a415d9288616597ff7ef943f7b67f352917d2e0a", 23 | "zh:0e46a1ff95096fdb2f40c6fcb172ba64a2002c9ce8edab8057f66f192a928be0", 24 | "zh:222a4489f4188532643e3341413b9c44b1383d5c722ec45b6f21266a4c4ba2aa", 25 | "zh:26a28a08588ee57b6da330bd8ef403045a68a13c42aab4943f67797013b5b6f1", 26 | "zh:4cbee92a76b6709f1f543ed838e17ca52eb03a0eb6edc33bc68a78cd0baa0cf3", 27 | "zh:54d9cef3445afedd630110a57b866ebb8daddfce8c2faafa46573c4514acdd13", 28 | "zh:5b0e9feb58d6271752578a29756f1bd03a2fa9b4f70314f5b514eaabfe29019b", 29 | "zh:7c43adad6b481b2d8787bef0ecfa62c95dd335072c160e72e462f83accf0f029", 30 | "zh:7dadeb33d40c8b06a8d756e47bc7ea2e7d8a9d8a2f0b2c887c4b3df39c5350a4", 31 | "zh:8a5f10033c0b3c2859aef39c0270c67e41634315e38234265bf84d530d0ea74f", 32 | "zh:8d47c8cb36fda0f035cd8226b9da4b95d3b952808879759770850d70e2a52150", 33 | "zh:b47f7e5318506658e44bf1cae266c3718bb427f0f92f7197c2c9d8571d24d091", 34 | "zh:b6197414be228b81c06a7929a50c45daeb3d7a256f482f19b90c214cd787526f", 35 | "zh:e02bbc0f4d59150945f2422cb0d81b21eb845c66e9ca5caf2dcaa3da6007a140", 36 | "zh:fbd1fee2c9df3aa19cf8851ce134dea6e45ea01cb85695c1726670c285797e25", 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /terraform/github/teams.tf: -------------------------------------------------------------------------------- 1 | locals { 2 | github_teams = { 3 | asdf-core = { 4 | description = "Core team" 5 | maintainers = [ 6 | "smorimoto", 7 | ] 8 | } 9 | 10 | asdf-infrastructure = { 11 | description = "Infrastructure team" 12 | maintainers = [ 13 | "smorimoto", 14 | ] 15 | } 16 | 17 | asdf-alp = { 18 | description = "The people with push access to the asdf-alp repository" 19 | maintainers = [] 20 | } 21 | 22 | asdf-alpine = { 23 | description = "The people with push access to the asdf-alpine repository" 24 | maintainers = [ 25 | "vic", 26 | ] 27 | } 28 | 29 | asdf-aocc = { 30 | description = "The people with push access to the asdf-aocc repository" 31 | maintainers = [] 32 | } 33 | 34 | asdf-aria2 = { 35 | description = "The people with push access to the asdf-aria2 repository" 36 | maintainers = [] 37 | } 38 | 39 | asdf-arkade = { 40 | description = "The people with push access to the asdf-arkade repository" 41 | maintainers = [ 42 | "looztra", 43 | ] 44 | } 45 | 46 | asdf-bitwarden-secrets-manager = { 47 | description = "The people with push access to the asdf-bitwarden-secrets-manager repository" 48 | maintainers = [ 49 | "FIAV1", 50 | ] 51 | } 52 | 53 | asdf-ccache = { 54 | description = "The people with push access to the asdf-ccache repository" 55 | maintainers = [] 56 | } 57 | 58 | asdf-chezscheme = { 59 | description = "The people with push access to the asdf-chezscheme repository" 60 | maintainers = [ 61 | "vic", 62 | ] 63 | } 64 | 65 | asdf-cloak-swift = { 66 | description = "The people with push access to the asdf-cloak-swift repository" 67 | maintainers = [ 68 | "lordcodes", 69 | ] 70 | } 71 | 72 | asdf-clojure = { 73 | description = "The people with push access to the asdf-clojure repository" 74 | maintainers = [ 75 | "vic", 76 | ] 77 | } 78 | 79 | asdf-cmake = { 80 | description = "The people with push access to the asdf-cmake repository" 81 | maintainers = [ 82 | "amrox", 83 | ] 84 | } 85 | 86 | asdf-cmctl = { 87 | description = "The people with push access to the asdf-crystal repository" 88 | maintainers = [ 89 | "superbrothers", 90 | ] 91 | } 92 | 93 | asdf-crystal = { 94 | description = "The people with push access to the asdf-crystal repository" 95 | maintainers = [ 96 | "marciogm", 97 | ] 98 | } 99 | 100 | asdf-cue = { 101 | description = "The people with push access to the asdf-cue repository" 102 | maintainers = [ 103 | "NeoHsu", 104 | "spencergilbert", 105 | ] 106 | } 107 | 108 | asdf-dapr-cli = { 109 | description = "The people with push access to the asdf-dapr-cli repository" 110 | maintainers = [ 111 | "mindovermiles262", 112 | ] 113 | } 114 | 115 | asdf-dasel = { 116 | description = "The people with push access to the asdf-dasel repository" 117 | maintainers = [ 118 | "ghostsquad", 119 | "TomWright", 120 | ] 121 | } 122 | 123 | asdf-deno = { 124 | description = "The people with push access to the asdf-deno repository" 125 | maintainers = [] 126 | } 127 | 128 | asdf-direnv = { 129 | description = "The people with push access to the asdf-direnv repository" 130 | maintainers = [ 131 | "jfly", 132 | "michi-zuri", 133 | "vic", 134 | ] 135 | } 136 | 137 | asdf-dotty = { 138 | description = "The people with push access to the asdf-dotty repository" 139 | maintainers = [ 140 | "vic", 141 | ] 142 | } 143 | 144 | asdf-dprint = { 145 | description = "The people with push access to the asdf-dprint repository" 146 | maintainers = [ 147 | "SnO2WMaN", 148 | ] 149 | } 150 | 151 | asdf-duckdb = { 152 | description = "The people with push access to the asdf-duckdb repository" 153 | maintainers = [ 154 | "JesseStimpson", 155 | ] 156 | } 157 | 158 | asdf-elm = { 159 | description = "The people with push access to the asdf-elm repository" 160 | maintainers = [ 161 | "brianvanburken", 162 | ] 163 | } 164 | 165 | asdf-esy = { 166 | description = "The people with push access to the asdf-esy repository" 167 | maintainers = [] 168 | } 169 | 170 | asdf-etcd = { 171 | description = "The people with push access to the asdf-etcd repository" 172 | maintainers = [ 173 | "particledecay", 174 | ] 175 | } 176 | 177 | asdf-flutter = { 178 | description = "The people with push access to the asdf-flutter repository" 179 | maintainers = [ 180 | "ciccioska", 181 | "ken-ty", 182 | "oae", 183 | "ugurcoskn", 184 | ] 185 | } 186 | 187 | asdf-fstar = { 188 | description = "The people with push access to the asdf-fstar repository" 189 | maintainers = [] 190 | } 191 | 192 | asdf-getenvoy = { 193 | description = "The people with push access to the asdf-getenvoy repository" 194 | maintainers = [ 195 | "superbrothers", 196 | ] 197 | } 198 | 199 | asdf-gitlab-lab = { 200 | description = "The people with push access to the asdf-lab repository" 201 | maintainers = [ 202 | "particledecay", 203 | ] 204 | } 205 | 206 | asdf-gleam = { 207 | description = "The people with push access to the asdf-gleam repository" 208 | maintainers = [] 209 | } 210 | 211 | asdf-golang = { 212 | description = "The people with push access to the asdf-golang repository" 213 | maintainers = [ 214 | "kennyp", 215 | ] 216 | } 217 | 218 | asdf-graalvm = { 219 | description = "The people with push access to the asdf-graalvm repository" 220 | maintainers = [] 221 | } 222 | 223 | asdf-grpcurl = { 224 | description = "The people with push access to the asdf-grpcurl repository" 225 | maintainers = [ 226 | "superbrothers", 227 | ] 228 | } 229 | 230 | asdf-hashicorp = { 231 | description = "The people with push access to the asdf-hashicorp repository" 232 | maintainers = [ 233 | "DustinChaloupka", 234 | "nathantypanski", 235 | "radditude", 236 | ] 237 | } 238 | 239 | asdf-haskell = { 240 | description = "The people with push access to the asdf-haskell repository" 241 | maintainers = [] 242 | } 243 | 244 | asdf-haxe = { 245 | description = "The people with push access to the asdf-haxe repository" 246 | maintainers = [] 247 | } 248 | 249 | asdf-helmsman = { 250 | description = "The people with push access to the asdf-helmsman repository" 251 | maintainers = [ 252 | "luisdavim", 253 | ] 254 | } 255 | 256 | asdf-hishtory = { 257 | description = "The people with push access to the asdf-hishtory repository" 258 | maintainers = [ 259 | "czchen", 260 | ] 261 | } 262 | 263 | asdf-idris = { 264 | description = "The people with push access to the asdf-idris repository" 265 | maintainers = [] 266 | } 267 | 268 | asdf-idris2 = { 269 | description = "The people with push access to the asdf-idris2 repository" 270 | maintainers = [] 271 | } 272 | 273 | asdf-intlc = { 274 | description = "The people with push access to the asdf-intlc repository" 275 | maintainers = [ 276 | "osdiab", 277 | ] 278 | } 279 | 280 | asdf-jetbrains = { 281 | description = "The people with push access to the asdf-jetbrains repository" 282 | maintainers = [ 283 | "mbutov", 284 | ] 285 | } 286 | 287 | asdf-kconf = { 288 | description = "The people with push access to the asdf-kconf repository" 289 | maintainers = [ 290 | "particledecay", 291 | ] 292 | } 293 | 294 | asdf-kiota = { 295 | description = "The people with push access to the asdf-kiota repository" 296 | maintainers = [ 297 | "andreaTP", 298 | ] 299 | } 300 | 301 | asdf-kotlin = { 302 | description = "The people with push access to the asdf-kotlin repository" 303 | maintainers = [ 304 | "missingcharacter", 305 | ] 306 | } 307 | 308 | asdf-kpack-cli = { 309 | description = "The people with push access to the asdf-kpack-cli repository" 310 | maintainers = [ 311 | "mindovermiles262", 312 | ] 313 | } 314 | 315 | asdf-krelay = { 316 | description = "The people with push access to the asdf-krelay repository" 317 | maintainers = [ 318 | "ilpianista", 319 | "vad", 320 | ] 321 | } 322 | 323 | asdf-ktlint = { 324 | description = "The people with push access to the asdf-ktlint repository" 325 | maintainers = [ 326 | "esensar", 327 | ] 328 | } 329 | 330 | asdf-kubectl = { 331 | description = "The people with push access to the asdf-kubectl repository" 332 | maintainers = [ 333 | "DustinChaloupka", 334 | ] 335 | } 336 | 337 | asdf-lean = { 338 | description = "The people with push access to the asdf-lean repository" 339 | maintainers = [] 340 | } 341 | 342 | asdf-lfe = { 343 | description = "The people with push access to the asdf-lfe repository" 344 | maintainers = [] 345 | } 346 | 347 | asdf-link = { 348 | description = "The people with push access to the asdf-link repository" 349 | maintainers = [] 350 | } 351 | 352 | asdf-meson = { 353 | description = "The people with push access to the asdf-meson repository" 354 | maintainers = [] 355 | } 356 | 357 | asdf-mill = { 358 | description = "The people with push access to the asdf-mill repository" 359 | maintainers = [] 360 | } 361 | 362 | asdf-mimirtool = { 363 | description = "The people with push access to the asdf-mimirtool repository" 364 | maintainers = [ 365 | "czchen", 366 | ] 367 | } 368 | 369 | asdf-mlton = { 370 | description = "The people with push access to the asdf-mlton repository" 371 | maintainers = [] 372 | } 373 | 374 | asdf-moonrepo = { 375 | description = "The people with push access to the asdf-moonrepo repository" 376 | maintainers = [ 377 | "ethanjdiamond", 378 | ] 379 | } 380 | 381 | asdf-neko = { 382 | description = "The people with push access to the asdf-neko repository" 383 | maintainers = [] 384 | } 385 | 386 | asdf-nim = { 387 | description = "The people with push access to the asdf-nim repository" 388 | maintainers = [ 389 | "elijahr", 390 | ] 391 | } 392 | 393 | asdf-ninja = { 394 | description = "The people with push access to the asdf-ninja repository" 395 | maintainers = [] 396 | } 397 | 398 | asdf-ocaml = { 399 | description = "The people with push access to the asdf-ocaml repository" 400 | maintainers = [] 401 | } 402 | 403 | asdf-odo = { 404 | description = "The people with push access to the asdf-odo repository" 405 | maintainers = [ 406 | "rm3l", 407 | ] 408 | } 409 | 410 | asdf-opam = { 411 | description = "The people with push access to the asdf-opam repository" 412 | maintainers = [] 413 | } 414 | 415 | asdf-pandoc = { 416 | description = "The people with push access to the asdf-pandoc repository" 417 | maintainers = [ 418 | "StephanMeijer", "Fbrisset", "sys9kdr", 419 | ] 420 | } 421 | 422 | asdf-pandoc-crossref = { 423 | description = "The people with push access to the asdf-pandoc-crossref repository" 424 | maintainers = [ 425 | "sys9kdr", 426 | ] 427 | } 428 | 429 | asdf-pdm = { 430 | description = "The people with push access to the asdf-pdm repository" 431 | maintainers = [ 432 | "1oglop1", 433 | ] 434 | } 435 | 436 | asdf-peco = { 437 | description = "The people with push access to the asdf-peco repository" 438 | maintainers = [] 439 | } 440 | 441 | asdf-php = { 442 | description = "The people with push access to the asdf-php repository" 443 | maintainers = [ 444 | "Rusydy", 445 | ] 446 | } 447 | 448 | asdf-please = { 449 | description = "The people with push access to the asdf-please repository" 450 | maintainers = [] 451 | } 452 | 453 | asdf-plugin-manager = { 454 | description = "The people with push access to the asdf-plugin-manager repository" 455 | maintainers = [ 456 | "aabouzaid", 457 | ] 458 | } 459 | 460 | asdf-poetry = { 461 | description = "The people with push access to the asdf-poetry repository" 462 | maintainers = [ 463 | "crflynn", 464 | ] 465 | } 466 | 467 | asdf-pomerium-cli = { 468 | description = "The people with push access to the asdf-pomerium-cli repository" 469 | maintainers = [ 470 | "haggishunk", 471 | ] 472 | } 473 | 474 | asdf-promtool = { 475 | description = "The people with push access to the asdf-promtool repository" 476 | maintainers = [ 477 | "czchen", 478 | ] 479 | } 480 | 481 | asdf-python = { 482 | description = "The people with push access to the asdf-python repository" 483 | maintainers = [ 484 | "danhper", 485 | ] 486 | } 487 | 488 | asdf-quarkus = { 489 | description = "The people with push access to the asdf-quarkus repository" 490 | maintainers = [ 491 | "marcwrobel", 492 | ] 493 | } 494 | 495 | asdf-r = { 496 | description = "The people with push access to the asdf-r repository" 497 | maintainers = [ 498 | "taiar", 499 | ] 500 | } 501 | 502 | asdf-racket = { 503 | description = "The people with push access to the asdf-racket repository" 504 | maintainers = [ 505 | "nandalopes", 506 | ] 507 | } 508 | 509 | asdf-regal = { 510 | description = "The people with push access to the asdf-regal repository" 511 | maintainers = [ 512 | "czchen", 513 | ] 514 | } 515 | 516 | asdf-rlwrap = { 517 | description = "The people with push access to the asdf-rlwrap repository" 518 | maintainers = [] 519 | } 520 | 521 | asdf-rust = { 522 | description = "The people with push access to the asdf-rust repository" 523 | maintainers = [] 524 | } 525 | 526 | asdf-scala = { 527 | description = "The people with push access to the asdf-scala repository" 528 | maintainers = [ 529 | "mtatheonly", 530 | ] 531 | } 532 | 533 | asdf-scala-cli = { 534 | description = "The people with push access to the asdf-scala-cli repository" 535 | maintainers = [ 536 | "rlemaitre", 537 | ] 538 | } 539 | 540 | asdf-sml = { 541 | description = "The people with push access to the asdf-sml repository" 542 | maintainers = [ 543 | "nverno", 544 | ] 545 | } 546 | 547 | asdf-stratus-red-team = { 548 | description = "The people with push access to the asdf-stratus-red-team repository" 549 | maintainers = [ 550 | "christophetd", 551 | "vthiery", 552 | ] 553 | } 554 | 555 | asdf-svu = { 556 | description = "The people with push access to the asdf-svu repository" 557 | maintainers = [ 558 | "ghostsquad", 559 | "caarlos0", 560 | ] 561 | } 562 | 563 | asdf-swift = { 564 | description = "The people with push access to the asdf-swift repository" 565 | maintainers = [] 566 | } 567 | 568 | asdf-swifthooks = { 569 | description = "The people with push access to the asdf-swifthooks repository" 570 | maintainers = [ 571 | "lordcodes", 572 | ] 573 | } 574 | 575 | asdf-taskfile = { 576 | description = "The people with push access to the asdf-task repository" 577 | maintainers = [ 578 | "particledecay", 579 | ] 580 | } 581 | 582 | asdf-temporal = { 583 | description = "The people with push access to the asdf-temporal repository" 584 | maintainers = [ 585 | "joshkaplinsky", 586 | "hariscodes", 587 | ] 588 | } 589 | 590 | asdf-terragrunt = { 591 | description = "The people with push access to the asdf-terragrunt repository" 592 | maintainers = [ 593 | "ohmer", 594 | ] 595 | } 596 | 597 | asdf-tomcat = { 598 | description = "The people with push access to the asdf-tomcat repository" 599 | maintainers = [ 600 | "mbutov", 601 | ] 602 | } 603 | 604 | asdf-tridentctl = { 605 | description = "The people with push access to the asdf-tridentctl repository" 606 | maintainers = [ 607 | "superbrothers", 608 | ] 609 | } 610 | 611 | asdf-tuist = { 612 | description = "The people with push access to the asdf-tuist repository" 613 | maintainers = [ 614 | "fortmarek", 615 | "pepicrft" 616 | ] 617 | } 618 | 619 | asdf-tuist-cloud = { 620 | description = "The people with push access to the asdf-tuist-cloud repository" 621 | maintainers = [ 622 | "fortmarek", 623 | "pepicrft" 624 | ] 625 | } 626 | 627 | asdf-ubuntu = { 628 | description = "The people with push access to the asdf-ubuntu repository" 629 | maintainers = [] 630 | } 631 | 632 | asdf-uv = { 633 | description = "The people with push access to the asdf-uv repository" 634 | maintainers = [ 635 | "b1-luettje" 636 | ] 637 | } 638 | 639 | asdf-zig = { 640 | description = "The people with push access to the asdf-zig repository" 641 | maintainers = [ 642 | "jiacai2050" 643 | ] 644 | } 645 | } 646 | } 647 | 648 | resource "github_team" "teams" { 649 | for_each = local.github_teams 650 | 651 | name = each.key 652 | description = each.value.description 653 | privacy = "closed" 654 | } 655 | 656 | resource "github_team_membership" "team_membership" { 657 | for_each = { for i in flatten( 658 | [for team_name, team in local.github_teams : [ 659 | [for username in lookup(team, "maintainers", []) : { 660 | team_name = team_name, 661 | username = username, 662 | role = "maintainer", 663 | }], 664 | ]]) : format("%s.%s", i.team_name, i.username) => i 665 | } 666 | 667 | team_id = github_team.teams[each.value.team_name].id 668 | role = each.value.role 669 | username = each.value.username 670 | } 671 | -------------------------------------------------------------------------------- /terraform/github/repositories.tf: -------------------------------------------------------------------------------- 1 | locals { 2 | github_repos = { 3 | for repo_name, repo in { 4 | ".github" = { 5 | description = "asdf-community meta repository" 6 | default_branch = "master" 7 | teams = [ 8 | "asdf-core", 9 | ] 10 | } 11 | 12 | infrastructure = { 13 | description = "Infrastructure configuration files" 14 | default_branch = "main" 15 | teams = [ 16 | "asdf-infrastructure", 17 | ] 18 | } 19 | 20 | asdf-alp = { 21 | description = "alp plugin for the asdf version manager" 22 | homepage_url = "https://github.com/asdf-vm/asdf" 23 | default_branch = "master" 24 | topics = [ 25 | "asdf-plugin", 26 | "asdf", 27 | ] 28 | teams = [ 29 | "asdf-alp", 30 | "asdf-core", 31 | ] 32 | } 33 | 34 | asdf-alpine = { 35 | description = "Alpine Linux docker images of asdf tools" 36 | homepage_url = "https://github.com/asdf-vm/asdf" 37 | default_branch = "master" 38 | topics = [ 39 | "asdf-plugin", 40 | "asdf", 41 | ] 42 | teams = [ 43 | "asdf-alpine", 44 | "asdf-core", 45 | ] 46 | } 47 | 48 | asdf-aocc = { 49 | description = "AMD Optimizing C/C++ Compiler plugin for the asdf version manager" 50 | homepage_url = "https://github.com/asdf-vm/asdf" 51 | default_branch = "master" 52 | topics = [ 53 | "asdf-plugin", 54 | "asdf", 55 | ] 56 | teams = [ 57 | "asdf-aocc", 58 | "asdf-core", 59 | ] 60 | } 61 | 62 | asdf-aria2 = { 63 | description = "aria2 plugin for the asdf version manager" 64 | homepage_url = "https://github.com/asdf-vm/asdf" 65 | default_branch = "master" 66 | topics = [ 67 | "asdf-plugin", 68 | "asdf", 69 | ] 70 | teams = [ 71 | "asdf-aria2", 72 | "asdf-core", 73 | ] 74 | } 75 | 76 | asdf-arkade = { 77 | description = "arkade plugin for the asdf version manager" 78 | homepage_url = "https://github.com/asdf-vm/asdf" 79 | default_branch = "master" 80 | topics = [ 81 | "asdf-plugin", 82 | "asdf", 83 | ] 84 | teams = [ 85 | "asdf-arkade", 86 | "asdf-core", 87 | ] 88 | } 89 | 90 | asdf-bitwarden-secrets-manager = { 91 | description = "asdf-bitwarden-secrets-manager for the asdf version manager" 92 | homepage_url = "https://github.com/asdf-vm/asdf" 93 | default_branch = "main" 94 | topics = [ 95 | "asdf-plugin", 96 | "asdf", 97 | ] 98 | teams = [ 99 | "asdf-bitwarden-secrets-manager", 100 | "asdf-core", 101 | ] 102 | } 103 | 104 | asdf-ccache = { 105 | description = "ccache plugin for the asdf version manager" 106 | homepage_url = "https://github.com/asdf-vm/asdf" 107 | default_branch = "master" 108 | topics = [ 109 | "asdf-plugin", 110 | "asdf", 111 | ] 112 | teams = [ 113 | "asdf-ccache", 114 | "asdf-core", 115 | ] 116 | } 117 | 118 | asdf-chezscheme = { 119 | description = "Chez Scheme plugin for the asdf version manager" 120 | homepage_url = "https://github.com/asdf-vm/asdf" 121 | default_branch = "master" 122 | topics = [ 123 | "asdf-plugin", 124 | "asdf", 125 | ] 126 | teams = [ 127 | "asdf-chezscheme", 128 | "asdf-core", 129 | ] 130 | } 131 | 132 | asdf-cloak-swift = { 133 | description = "Cloak Swift for the asdf version manager" 134 | homepage_url = "https://github.com/asdf-vm/asdf" 135 | default_branch = "main" 136 | topics = [ 137 | "asdf-plugin", 138 | "asdf", 139 | ] 140 | teams = [ 141 | "asdf-cloak-swift", 142 | "asdf-core", 143 | ] 144 | } 145 | 146 | asdf-clojure = { 147 | description = "Clojure plugin for the asdf version manager" 148 | homepage_url = "https://github.com/asdf-vm/asdf" 149 | default_branch = "master" 150 | topics = [ 151 | "asdf-plugin", 152 | "asdf", 153 | ] 154 | teams = [ 155 | "asdf-clojure", 156 | "asdf-core", 157 | ] 158 | } 159 | 160 | asdf-cmake = { 161 | description = "CMake plugin for the asdf version manager" 162 | homepage_url = "https://github.com/asdf-vm/asdf" 163 | default_branch = "main" 164 | topics = [ 165 | "asdf-plugin", 166 | "asdf", 167 | ] 168 | teams = [ 169 | "asdf-cmake", 170 | "asdf-core", 171 | ] 172 | } 173 | 174 | asdf-cmctl = { 175 | description = "cmctl plugin for the asdf version manager" 176 | homepage_url = "https://github.com/asdf-vm/asdf" 177 | default_branch = "master" 178 | topics = [ 179 | "asdf-plugin", 180 | "asdf", 181 | ] 182 | teams = [ 183 | "asdf-cmctl", 184 | "asdf-core", 185 | ] 186 | } 187 | 188 | asdf-crystal = { 189 | description = "Crystal plugin for the asdf version manager" 190 | homepage_url = "https://github.com/asdf-vm/asdf" 191 | default_branch = "master" 192 | topics = [ 193 | "asdf-plugin", 194 | "asdf", 195 | ] 196 | teams = [ 197 | "asdf-crystal", 198 | "asdf-core", 199 | ] 200 | } 201 | 202 | asdf-cue = { 203 | description = "CUE plugin for the asdf version manager" 204 | homepage_url = "https://github.com/asdf-vm/asdf" 205 | default_branch = "master" 206 | topics = [ 207 | "asdf-plugin", 208 | "asdf", 209 | ] 210 | teams = [ 211 | "asdf-cue", 212 | "asdf-core", 213 | ] 214 | } 215 | 216 | asdf-dapr-cli = { 217 | description = "Dapr CLI plugin for the asdf version manager" 218 | homepage_url = "https://github.com/asdf-vm/asdf" 219 | default_branch = "main" 220 | topics = [ 221 | "asdf-plugin", 222 | "asdf", 223 | ] 224 | teams = [ 225 | "asdf-dapr-cli", 226 | "asdf-core", 227 | ] 228 | } 229 | 230 | asdf-dasel = { 231 | description = "Dasel plugin for asdf version manager" 232 | homepage_url = "https://github.com/asdf-vm/asdf" 233 | default_branch = "main" 234 | topics = [ 235 | "asdf-plugin", 236 | "asdf", 237 | ] 238 | teams = [ 239 | "asdf-dasel", 240 | "asdf-core", 241 | ] 242 | } 243 | 244 | asdf-deno = { 245 | description = "Deno plugin for the asdf version manager" 246 | homepage_url = "https://github.com/asdf-vm/asdf" 247 | default_branch = "master" 248 | topics = [ 249 | "asdf-plugin", 250 | "asdf", 251 | ] 252 | teams = [ 253 | "asdf-deno", 254 | "asdf-core", 255 | ] 256 | } 257 | 258 | asdf-direnv = { 259 | description = "direnv plugin for the asdf version manager" 260 | homepage_url = "https://github.com/asdf-vm/asdf" 261 | default_branch = "master" 262 | topics = [ 263 | "asdf-plugin", 264 | "asdf", 265 | ] 266 | teams = [ 267 | "asdf-direnv", 268 | "asdf-core", 269 | ] 270 | } 271 | 272 | asdf-dotty = { 273 | description = "dotty (Scala 3) plugin for the asdf version manager" 274 | homepage_url = "https://github.com/asdf-vm/asdf" 275 | default_branch = "master" 276 | topics = [ 277 | "asdf-plugin", 278 | "asdf", 279 | ] 280 | teams = [ 281 | "asdf-dotty", 282 | "asdf-core", 283 | ] 284 | } 285 | 286 | asdf-dprint = { 287 | description = "dprint plugin for the asdf version manager" 288 | homepage_url = "https://github.com/asdf-vm/asdf" 289 | default_branch = "main" 290 | topics = [ 291 | "asdf-plugin", 292 | "asdf", 293 | ] 294 | teams = [ 295 | "asdf-dprint", 296 | "asdf-core", 297 | ] 298 | } 299 | 300 | asdf-duckdb = { 301 | description = "duckdb plugin for the asdf version manager" 302 | homepage_url = "https://github.com/asdf-vm/asdf" 303 | default_branch = "main" 304 | topics = [ 305 | "asdf-plugin", 306 | "asdf", 307 | ] 308 | teams = [ 309 | "asdf-duckdb", 310 | "asdf-core", 311 | ] 312 | } 313 | 314 | asdf-elm = { 315 | description = "Elm plugin for the asdf version manager" 316 | homepage_url = "https://github.com/asdf-vm/asdf" 317 | default_branch = "master" 318 | topics = [ 319 | "asdf-plugin", 320 | "asdf", 321 | ] 322 | teams = [ 323 | "asdf-elm", 324 | "asdf-core", 325 | ] 326 | } 327 | 328 | asdf-esy = { 329 | description = "esy plugin for the asdf version manager" 330 | homepage_url = "https://github.com/asdf-vm/asdf" 331 | default_branch = "master" 332 | topics = [ 333 | "asdf-plugin", 334 | "asdf", 335 | ] 336 | teams = [ 337 | "asdf-esy", 338 | "asdf-core", 339 | ] 340 | } 341 | 342 | asdf-flutter = { 343 | description = "flutter plugin for the asdf version manager" 344 | homepage_url = "https://github.com/asdf-vm/asdf" 345 | default_branch = "master" 346 | topics = [ 347 | "asdf-plugin", 348 | "asdf", 349 | ] 350 | teams = [ 351 | "asdf-flutter", 352 | "asdf-core", 353 | ] 354 | } 355 | 356 | asdf-fstar = { 357 | description = "FStar plugin for the asdf version manager" 358 | homepage_url = "https://github.com/asdf-vm/asdf" 359 | default_branch = "master" 360 | topics = [ 361 | "asdf-plugin", 362 | "asdf", 363 | ] 364 | teams = [ 365 | "asdf-fstar", 366 | "asdf-core", 367 | ] 368 | } 369 | 370 | asdf-getenvoy = { 371 | description = "GetEnvoy plugin for the asdf version manager" 372 | homepage_url = "https://github.com/asdf-vm/asdf" 373 | default_branch = "master" 374 | topics = [ 375 | "asdf-plugin", 376 | "asdf", 377 | ] 378 | teams = [ 379 | "asdf-getenvoy", 380 | "asdf-core", 381 | ] 382 | } 383 | 384 | asdf-gleam = { 385 | description = "Gleam plugin for the asdf version manager" 386 | homepage_url = "https://github.com/asdf-vm/asdf" 387 | default_branch = "master" 388 | topics = [ 389 | "asdf-plugin", 390 | "asdf", 391 | ] 392 | teams = [ 393 | "asdf-gleam", 394 | "asdf-core", 395 | ] 396 | } 397 | 398 | asdf-golang = { 399 | description = "Go plugin for the asdf version manager" 400 | homepage_url = "https://github.com/asdf-vm/asdf" 401 | default_branch = "master" 402 | topics = [ 403 | "asdf-plugin", 404 | "asdf", 405 | ] 406 | teams = [ 407 | "asdf-golang", 408 | "asdf-core", 409 | ] 410 | } 411 | 412 | asdf-graalvm = { 413 | description = "GraalVM plugin for the asdf version manager" 414 | homepage_url = "https://github.com/asdf-vm/asdf" 415 | default_branch = "master" 416 | topics = [ 417 | "asdf-plugin", 418 | "asdf", 419 | ] 420 | teams = [ 421 | "asdf-graalvm", 422 | "asdf-core", 423 | ] 424 | } 425 | 426 | asdf-grpcurl = { 427 | description = "gRPCurl plugin for the asdf version manager" 428 | homepage_url = "https://github.com/asdf-vm/asdf" 429 | default_branch = "master" 430 | topics = [ 431 | "asdf-plugin", 432 | "asdf", 433 | ] 434 | teams = [ 435 | "asdf-grpcurl", 436 | "asdf-core", 437 | ] 438 | } 439 | 440 | asdf-hashicorp = { 441 | description = "HashiCorp plugin for the asdf version manager" 442 | homepage_url = "https://github.com/asdf-vm/asdf" 443 | default_branch = "master" 444 | topics = [ 445 | "asdf-plugin", 446 | "asdf", 447 | ] 448 | teams = [ 449 | "asdf-hashicorp", 450 | "asdf-core", 451 | ] 452 | } 453 | 454 | asdf-haskell = { 455 | description = "Haskell plugin for the asdf version manager" 456 | homepage_url = "https://github.com/asdf-vm/asdf" 457 | default_branch = "master" 458 | topics = [ 459 | "asdf-plugin", 460 | "asdf", 461 | ] 462 | teams = [ 463 | "asdf-haskell", 464 | "asdf-core", 465 | ] 466 | } 467 | 468 | asdf-haxe = { 469 | description = "Haxe plugin for the asdf version manager" 470 | homepage_url = "https://github.com/asdf-vm/asdf" 471 | default_branch = "master" 472 | topics = [ 473 | "asdf-plugin", 474 | "asdf", 475 | ] 476 | teams = [ 477 | "asdf-haxe", 478 | "asdf-core", 479 | ] 480 | } 481 | 482 | asdf-helmsman = { 483 | description = "Helmsman plugin for the asdf version manager" 484 | homepage_url = "https://github.com/asdf-vm/asdf" 485 | default_branch = "master" 486 | topics = [ 487 | "asdf-plugin", 488 | "asdf", 489 | ] 490 | teams = [ 491 | "asdf-helmsman", 492 | "asdf-core", 493 | ] 494 | } 495 | 496 | asdf-hishtory = { 497 | description = "hiSHtory plugin for the asdf version manager" 498 | homepage_url = "https://github.com/asdf-vm/asdf" 499 | default_branch = "main" 500 | topics = [ 501 | "asdf-plugin", 502 | "asdf", 503 | ] 504 | teams = [ 505 | "asdf-hishtory", 506 | "asdf-core", 507 | ] 508 | } 509 | 510 | asdf-idris = { 511 | description = "Idris plugin for the asdf version manager" 512 | homepage_url = "https://github.com/asdf-vm/asdf" 513 | default_branch = "master" 514 | topics = [ 515 | "asdf-plugin", 516 | "asdf", 517 | ] 518 | teams = [ 519 | "asdf-idris", 520 | "asdf-core", 521 | ] 522 | } 523 | 524 | asdf-idris2 = { 525 | description = "Idris 2 plugin for the asdf version manager" 526 | homepage_url = "https://github.com/asdf-vm/asdf" 527 | default_branch = "master" 528 | topics = [ 529 | "asdf-plugin", 530 | "asdf", 531 | ] 532 | teams = [ 533 | "asdf-idris2", 534 | "asdf-core", 535 | ] 536 | } 537 | 538 | asdf-intlc = { 539 | description = "intlc plugin for the asdf version manager" 540 | homepage_url = "https://github.com/asdf-vm/asdf" 541 | default_branch = "main" 542 | topics = [ 543 | "asdf-plugin", 544 | "asdf", 545 | ] 546 | teams = [ 547 | "asdf-intlc", 548 | "asdf-core", 549 | ] 550 | } 551 | 552 | asdf-jetbrains = { 553 | description = "JetBrains products for the asdf version manager" 554 | homepage_url = "https://github.com/asdf-community/asdf-jetbrains" 555 | default_branch = "main" 556 | topics = [ 557 | "asdf-plugin", 558 | "asdf", 559 | ] 560 | teams = [ 561 | "asdf-jetbrains", 562 | "asdf-core", 563 | ] 564 | } 565 | 566 | asdf-kotlin = { 567 | description = "Kotlin plugin for the asdf version manager" 568 | homepage_url = "https://github.com/asdf-vm/asdf" 569 | default_branch = "master" 570 | topics = [ 571 | "asdf-plugin", 572 | "asdf", 573 | ] 574 | teams = [ 575 | "asdf-kotlin", 576 | "asdf-core", 577 | ] 578 | } 579 | 580 | asdf-kpack-cli = { 581 | description = "Kpack CLI plugin for the asdf version manager" 582 | homepage_url = "https://github.com/asdf-vm/asdf" 583 | default_branch = "main" 584 | topics = [ 585 | "asdf-plugin", 586 | "asdf", 587 | ] 588 | teams = [ 589 | "asdf-kpack-cli", 590 | "asdf-core", 591 | ] 592 | } 593 | 594 | asdf-kiota = { 595 | description = "kiota plugin for the asdf version manager" 596 | homepage_url = "https://github.com/asdf-vm/asdf" 597 | default_branch = "main" 598 | topics = [ 599 | "asdf-plugin", 600 | "asdf", 601 | ] 602 | teams = [ 603 | "asdf-kiota", 604 | "asdf-core", 605 | ] 606 | } 607 | 608 | asdf-krelay = { 609 | description = "krelay plugin for the asdf version manager" 610 | homepage_url = "https://github.com/asdf-vm/asdf" 611 | default_branch = "master" 612 | topics = [ 613 | "asdf-plugin", 614 | "asdf", 615 | ] 616 | teams = [ 617 | "asdf-krelay", 618 | "asdf-core", 619 | ] 620 | } 621 | 622 | asdf-ktlint = { 623 | description = "ktlint plugin for the asdf version manager" 624 | homepage_url = "https://github.com/asdf-vm/asdf" 625 | default_branch = "main" 626 | topics = [ 627 | "asdf-plugin", 628 | "asdf", 629 | ] 630 | teams = [ 631 | "asdf-ktlint", 632 | "asdf-core", 633 | ] 634 | } 635 | 636 | asdf-kubectl = { 637 | description = "Kubectl plugin for the asdf version manager" 638 | homepage_url = "https://github.com/asdf-vm/asdf" 639 | default_branch = "master" 640 | topics = [ 641 | "asdf-plugin", 642 | "asdf", 643 | ] 644 | teams = [ 645 | "asdf-kubectl", 646 | "asdf-core", 647 | ] 648 | } 649 | 650 | asdf-lean = { 651 | description = "Lean plugin for the asdf version manager" 652 | homepage_url = "https://github.com/asdf-vm/asdf" 653 | default_branch = "master" 654 | topics = [ 655 | "asdf-plugin", 656 | "asdf", 657 | ] 658 | teams = [ 659 | "asdf-lean", 660 | "asdf-core", 661 | ] 662 | } 663 | 664 | asdf-lfe = { 665 | description = "LFE plugin for the asdf version manager" 666 | homepage_url = "https://github.com/asdf-vm/asdf" 667 | default_branch = "master" 668 | topics = [ 669 | "asdf-plugin", 670 | "asdf", 671 | ] 672 | teams = [ 673 | "asdf-lfe", 674 | "asdf-core", 675 | ] 676 | } 677 | 678 | asdf-link = { 679 | description = "Use system tools with asdf version manager" 680 | homepage_url = "https://github.com/asdf-vm/asdf" 681 | default_branch = "master" 682 | topics = [ 683 | "asdf-plugin", 684 | "asdf", 685 | ] 686 | teams = [ 687 | "asdf-link", 688 | "asdf-core", 689 | ] 690 | } 691 | 692 | asdf-meson = { 693 | description = "Meson plugin for the asdf version manager" 694 | homepage_url = "https://github.com/asdf-vm/asdf" 695 | default_branch = "master" 696 | topics = [ 697 | "asdf-plugin", 698 | "asdf", 699 | ] 700 | teams = [ 701 | "asdf-meson", 702 | "asdf-core", 703 | ] 704 | } 705 | 706 | asdf-mill = { 707 | description = "Mill plugin for the asdf version manager" 708 | homepage_url = "https://github.com/asdf-vm/asdf" 709 | default_branch = "master" 710 | topics = [ 711 | "asdf-plugin", 712 | "asdf", 713 | ] 714 | teams = [ 715 | "asdf-mill", 716 | "asdf-core", 717 | ] 718 | } 719 | 720 | asdf-mimirtool = { 721 | description = "mimirtool plugin for the asdf version manager" 722 | homepage_url = "https://github.com/asdf-vm/asdf" 723 | default_branch = "main" 724 | topics = [ 725 | "asdf-plugin", 726 | "asdf", 727 | ] 728 | teams = [ 729 | "asdf-mimirtool", 730 | "asdf-core", 731 | ] 732 | } 733 | 734 | asdf-mlton = { 735 | description = "MLton plugin for the asdf version manager" 736 | homepage_url = "https://github.com/asdf-vm/asdf" 737 | default_branch = "master" 738 | topics = [ 739 | "asdf-plugin", 740 | "asdf", 741 | ] 742 | teams = [ 743 | "asdf-mlton", 744 | "asdf-core", 745 | ] 746 | } 747 | 748 | asdf-moonrepo = { 749 | description = "Moon plugin for the asdf version manager" 750 | homepage_url = "https://github.com/asdf-vm/asdf" 751 | default_branch = "main" 752 | topics = [ 753 | "asdf-plugin", 754 | "asdf", 755 | ] 756 | teams = [ 757 | "asdf-moonrepo", 758 | "asdf-core", 759 | ] 760 | } 761 | 762 | asdf-neko = { 763 | description = "Neko plugin for the asdf version manager" 764 | homepage_url = "https://github.com/asdf-vm/asdf" 765 | default_branch = "master" 766 | topics = [ 767 | "asdf-plugin", 768 | "asdf", 769 | ] 770 | teams = [ 771 | "asdf-neko", 772 | "asdf-core", 773 | ] 774 | } 775 | 776 | asdf-nim = { 777 | description = "Nim plugin for the asdf version manager" 778 | homepage_url = "https://github.com/asdf-vm/asdf" 779 | default_branch = "main" 780 | topics = [ 781 | "asdf-plugin", 782 | "asdf", 783 | ] 784 | teams = [ 785 | "asdf-nim", 786 | "asdf-core", 787 | ] 788 | } 789 | 790 | asdf-ninja = { 791 | description = "Ninja plugin for the asdf version manager" 792 | homepage_url = "https://github.com/asdf-vm/asdf" 793 | default_branch = "master" 794 | topics = [ 795 | "asdf-plugin", 796 | "asdf", 797 | ] 798 | teams = [ 799 | "asdf-ninja", 800 | "asdf-core", 801 | ] 802 | } 803 | 804 | asdf-ocaml = { 805 | description = "OCaml plugin for the asdf version manager" 806 | homepage_url = "https://github.com/asdf-vm/asdf" 807 | default_branch = "master" 808 | topics = [ 809 | "asdf-plugin", 810 | "asdf", 811 | ] 812 | teams = [ 813 | "asdf-ocaml", 814 | "asdf-core", 815 | ] 816 | } 817 | 818 | asdf-odo = { 819 | description = "asdf version manager plugin for odo, the developer-focused CLI for fast and iterative application development on Podman, Kubernetes and OpenShift" 820 | homepage_url = "https://odo.dev" 821 | default_branch = "main" 822 | topics = [ 823 | "asdf-plugin", 824 | "asdf", 825 | "application-development", 826 | "developer-tools", 827 | "kubernetes", 828 | "odo", 829 | "openshift", 830 | "podman", 831 | ] 832 | teams = [ 833 | "asdf-odo", 834 | "asdf-core", 835 | ] 836 | } 837 | 838 | asdf-opam = { 839 | description = "opam plugin for the asdf version manager" 840 | homepage_url = "https://github.com/asdf-vm/asdf" 841 | default_branch = "master" 842 | topics = [ 843 | "asdf-plugin", 844 | "asdf", 845 | ] 846 | teams = [ 847 | "asdf-opam", 848 | "asdf-core", 849 | ] 850 | } 851 | 852 | asdf-pdm = { 853 | description = "PDM plugin for the asdf version manager" 854 | homepage_url = "https://github.com/asdf-vm/asdf" 855 | default_branch = "main" 856 | topics = [ 857 | "asdf-plugin", 858 | "asdf", 859 | ] 860 | teams = [ 861 | "asdf-pdm", 862 | "asdf-core", 863 | ] 864 | } 865 | 866 | asdf-peco = { 867 | description = "peco plugin for the asdf version manager" 868 | homepage_url = "https://github.com/asdf-vm/asdf" 869 | default_branch = "master" 870 | topics = [ 871 | "asdf-plugin", 872 | "asdf", 873 | ] 874 | teams = [ 875 | "asdf-peco", 876 | "asdf-core", 877 | ] 878 | } 879 | 880 | asdf-php = { 881 | description = "PHP plugin for the asdf version manager" 882 | homepage_url = "https://github.com/asdf-vm/asdf" 883 | default_branch = "master" 884 | topics = [ 885 | "asdf-plugin", 886 | "asdf", 887 | ] 888 | teams = [ 889 | "asdf-php", 890 | "asdf-core", 891 | ] 892 | } 893 | 894 | asdf-please = { 895 | description = "Please plugin for the asdf version manager" 896 | homepage_url = "https://github.com/asdf-vm/asdf" 897 | default_branch = "master" 898 | topics = [ 899 | "asdf-plugin", 900 | "asdf", 901 | ] 902 | teams = [ 903 | "asdf-please", 904 | "asdf-core", 905 | ] 906 | } 907 | 908 | asdf-poetry = { 909 | description = "Poetry plugin for the asdf version manager" 910 | homepage_url = "https://github.com/asdf-vm/asdf" 911 | default_branch = "master" 912 | topics = [ 913 | "asdf-plugin", 914 | "asdf", 915 | ] 916 | teams = [ 917 | "asdf-poetry", 918 | "asdf-core", 919 | ] 920 | } 921 | 922 | asdf-plugin-manager = { 923 | description = "A plugin manager for the asdf version manager" 924 | homepage_url = "https://github.com/asdf-vm/asdf" 925 | default_branch = "main" 926 | topics = [ 927 | "asdf-plugin", 928 | "asdf", 929 | "security", 930 | ] 931 | teams = [ 932 | "asdf-plugin-manager", 933 | "asdf-core", 934 | ] 935 | } 936 | 937 | asdf-promtool = { 938 | description = "promtool plugin for the asdf version manager" 939 | homepage_url = "https://github.com/asdf-vm/asdf" 940 | default_branch = "main" 941 | topics = [ 942 | "asdf-plugin", 943 | "asdf", 944 | ] 945 | teams = [ 946 | "asdf-promtool", 947 | "asdf-core", 948 | ] 949 | } 950 | 951 | asdf-pomerium-cli = { 952 | description = "pomerium-cli plugin for the asdf version manager" 953 | homepage_url = "https://github.com/asdf-vm/asdf" 954 | default_branch = "main" 955 | topics = [ 956 | "asdf-plugin", 957 | "asdf", 958 | ] 959 | teams = [ 960 | "asdf-pomerium-cli", 961 | "asdf-core", 962 | ] 963 | } 964 | 965 | asdf-python = { 966 | description = "Python plugin for the asdf version manager" 967 | homepage_url = "https://github.com/asdf-vm/asdf" 968 | default_branch = "master" 969 | topics = [ 970 | "asdf-plugin", 971 | "asdf", 972 | ] 973 | teams = [ 974 | "asdf-python", 975 | "asdf-core", 976 | ] 977 | } 978 | 979 | asdf-quarkus = { 980 | description = "Quarkus plugin for the asdf version manager" 981 | homepage_url = "https://github.com/asdf-vm/asdf" 982 | default_branch = "main" 983 | topics = [ 984 | "asdf-plugin", 985 | "asdf", 986 | ] 987 | teams = [ 988 | "asdf-quarkus", 989 | "asdf-core", 990 | ] 991 | } 992 | 993 | asdf-r = { 994 | description = "R plugin for the asdf version manager" 995 | homepage_url = "https://github.com/asdf-vm/asdf" 996 | default_branch = "master" 997 | topics = [ 998 | "asdf-plugin", 999 | "asdf", 1000 | ] 1001 | teams = [ 1002 | "asdf-r", 1003 | "asdf-core", 1004 | ] 1005 | } 1006 | 1007 | asdf-racket = { 1008 | description = "Racket plugin for the asdf version manager" 1009 | homepage_url = "https://github.com/asdf-vm/asdf" 1010 | default_branch = "master" 1011 | topics = [ 1012 | "asdf-plugin", 1013 | "asdf", 1014 | ] 1015 | teams = [ 1016 | "asdf-racket", 1017 | "asdf-core", 1018 | ] 1019 | } 1020 | 1021 | asdf-regal = { 1022 | description = "regal plugin for the asdf version manager" 1023 | homepage_url = "https://github.com/asdf-vm/asdf" 1024 | default_branch = "main" 1025 | topics = [ 1026 | "asdf-plugin", 1027 | "asdf", 1028 | ] 1029 | teams = [ 1030 | "asdf-regal", 1031 | "asdf-core", 1032 | ] 1033 | } 1034 | 1035 | asdf-rlwrap = { 1036 | description = "rlwrap plugin for the asdf version manager" 1037 | homepage_url = "https://github.com/asdf-vm/asdf" 1038 | default_branch = "master" 1039 | topics = [ 1040 | "asdf-plugin", 1041 | "asdf", 1042 | ] 1043 | teams = [ 1044 | "asdf-rlwrap", 1045 | "asdf-core", 1046 | ] 1047 | } 1048 | 1049 | asdf-rust = { 1050 | description = "Rust plugin for the asdf version manager" 1051 | homepage_url = "https://github.com/asdf-vm/asdf" 1052 | default_branch = "master" 1053 | topics = [ 1054 | "asdf-plugin", 1055 | "asdf", 1056 | ] 1057 | teams = [ 1058 | "asdf-rust", 1059 | "asdf-core", 1060 | ] 1061 | } 1062 | 1063 | asdf-scala = { 1064 | description = "Scala plugin for the asdf version manager" 1065 | homepage_url = "https://github.com/asdf-vm/asdf" 1066 | default_branch = "master" 1067 | topics = [ 1068 | "asdf-plugin", 1069 | "asdf", 1070 | ] 1071 | teams = [ 1072 | "asdf-scala", 1073 | "asdf-core", 1074 | ] 1075 | } 1076 | 1077 | asdf-scala-cli = { 1078 | description = "Scala CLI plugin for the asdf version manager" 1079 | homepage_url = "https://github.com/asdf-vm/asdf" 1080 | default_branch = "main" 1081 | topics = [ 1082 | "asdf-plugin", 1083 | "asdf", 1084 | ] 1085 | teams = [ 1086 | "asdf-scala-cli", 1087 | "asdf-core", 1088 | ] 1089 | } 1090 | 1091 | asdf-sml = { 1092 | description = "Standard ML plugin for the asdf version manager" 1093 | homepage_url = "https://github.com/asdf-vm/asdf" 1094 | default_branch = "master" 1095 | topics = [ 1096 | "asdf-plugin", 1097 | "asdf", 1098 | ] 1099 | teams = [ 1100 | "asdf-sml", 1101 | "asdf-core", 1102 | ] 1103 | } 1104 | 1105 | asdf-stratus-red-team = { 1106 | description = "stratus-red-team plugin for asdf version manager" 1107 | homepage_url = "https://github.com/asdf-vm/asdf" 1108 | default_branch = "main" 1109 | topics = [ 1110 | "asdf-plugin", 1111 | "asdf", 1112 | ] 1113 | teams = [ 1114 | "asdf-stratus-red-team", 1115 | "asdf-core", 1116 | ] 1117 | } 1118 | 1119 | asdf-svu = { 1120 | description = "SVU plugin for the asdf version manager" 1121 | homepage_url = "https://github.com/asdf-vm/asdf" 1122 | default_branch = "master" 1123 | topics = [ 1124 | "asdf-plugin", 1125 | "asdf", 1126 | ] 1127 | teams = [ 1128 | "asdf-svu", 1129 | "asdf-core", 1130 | ] 1131 | } 1132 | 1133 | asdf-swifthooks = { 1134 | description = "SwiftHooks for the asdf version manager" 1135 | homepage_url = "https://github.com/asdf-vm/asdf" 1136 | default_branch = "main" 1137 | topics = [ 1138 | "asdf-plugin", 1139 | "asdf", 1140 | ] 1141 | teams = [ 1142 | "asdf-swifthooks", 1143 | "asdf-core", 1144 | ] 1145 | } 1146 | 1147 | asdf-temporal = { 1148 | description = "Temporal CLI plugin for the asdf version manager" 1149 | homepage_url = "https://github.com/temporalio/cli" 1150 | default_branch = "main" 1151 | topics = [ 1152 | "asdf-plugin", 1153 | "asdf", 1154 | "temporal", 1155 | "temporal-cli", 1156 | ] 1157 | teams = [ 1158 | "asdf-temporal", 1159 | "asdf-core", 1160 | ] 1161 | } 1162 | 1163 | asdf-tomcat = { 1164 | description = "Apache Tomcat for the asdf version manager" 1165 | homepage_url = "https://github.com/asdf-community/asdf-tomcat" 1166 | default_branch = "main" 1167 | topics = [ 1168 | "asdf-plugin", 1169 | "asdf", 1170 | ] 1171 | teams = [ 1172 | "asdf-tomcat", 1173 | "asdf-core", 1174 | ] 1175 | } 1176 | 1177 | asdf-tridentctl = { 1178 | description = "tridentctl plugin for the asdf version manager" 1179 | homepage_url = "https://github.com/asdf-vm/asdf" 1180 | default_branch = "master" 1181 | topics = [ 1182 | "asdf-plugin", 1183 | "asdf", 1184 | ] 1185 | teams = [ 1186 | "asdf-tridentctl", 1187 | "asdf-core", 1188 | ] 1189 | } 1190 | 1191 | asdf-tuist = { 1192 | description = "Tuist CLI plugin for the asdf version manager" 1193 | homepage_url = "https://github.com/tuist/tuist" 1194 | default_branch = "main" 1195 | topics = [ 1196 | "asdf-plugin", 1197 | "asdf", 1198 | ] 1199 | teams = [ 1200 | "asdf-tuist", 1201 | "asdf-core", 1202 | ] 1203 | } 1204 | 1205 | asdf-tuist-cloud = { 1206 | description = "Tuist Cloud CLI plugin for the asdf version manager" 1207 | homepage_url = "https://github.com/tuist/tuist" 1208 | default_branch = "main" 1209 | topics = [ 1210 | "asdf-plugin", 1211 | "asdf", 1212 | ] 1213 | teams = [ 1214 | "asdf-tuist-cloud", 1215 | "asdf-core", 1216 | ] 1217 | } 1218 | 1219 | asdf-ubuntu = { 1220 | description = "Ubuntu docker images for asdf tools" 1221 | homepage_url = "https://github.com/asdf-vm/asdf" 1222 | default_branch = "master" 1223 | topics = [ 1224 | "asdf-plugin", 1225 | "asdf", 1226 | ] 1227 | teams = [ 1228 | "asdf-ubuntu", 1229 | "asdf-core", 1230 | ] 1231 | } 1232 | 1233 | asdf-uv = { 1234 | description = "uv plugin for the asdf version manager" 1235 | homepage_url = "https://github.com/astral-sh/uv" 1236 | default_branch = "main" 1237 | topics = [ 1238 | "asdf-plugin", 1239 | "asdf", 1240 | ] 1241 | teams = [ 1242 | "asdf-uv", 1243 | "asdf-core", 1244 | ] 1245 | } 1246 | 1247 | asdf-zig = { 1248 | description = "Zig plugin for the asdf version manager" 1249 | homepage_url = "https://github.com/asdf-vm/asdf" 1250 | default_branch = "master" 1251 | topics = [ 1252 | "asdf-plugin", 1253 | "asdf", 1254 | ] 1255 | teams = [ 1256 | "asdf-zig", 1257 | "asdf-core", 1258 | ] 1259 | } 1260 | } : repo_name => merge(repo, { 1261 | description = format("%s [maintainer=%s]", 1262 | repo.description, 1263 | length(local.github_teams[repo.teams[0]].maintainers) > 0 ? 1264 | join(", ", [for maintainer in local.github_teams[repo.teams[0]].maintainers : format("@%s", maintainer)]) : 1265 | "LOOKING FOR A MAINTAINER! SUBMIT A PULL REQUEST TO THE INFRASTRUCTURE REPOSITORY!" 1266 | ) 1267 | }) 1268 | } 1269 | } 1270 | 1271 | resource "github_repository" "repositories" { 1272 | for_each = local.github_repos 1273 | 1274 | auto_init = true 1275 | name = each.key 1276 | description = each.value.description 1277 | homepage_url = lookup(each.value, "homepage_url", null) 1278 | topics = lookup(each.value, "topics", null) 1279 | allow_merge_commit = true 1280 | allow_rebase_merge = true 1281 | allow_squash_merge = true 1282 | delete_branch_on_merge = true 1283 | has_discussions = true 1284 | has_issues = true 1285 | has_projects = false 1286 | has_wiki = false 1287 | #tfsec:ignore:github-repositories-private 1288 | visibility = "public" 1289 | vulnerability_alerts = true 1290 | 1291 | lifecycle { 1292 | ignore_changes = [template] 1293 | } 1294 | } 1295 | 1296 | resource "github_team_repository" "team_repositories" { 1297 | for_each = { for i in flatten([for repo_name, repo in local.github_repos : 1298 | [for team_name in repo.teams : { 1299 | repo_name = repo_name, team_name = team_name 1300 | }] 1301 | ]) : format("%s.%s", i.repo_name, i.team_name) => i 1302 | } 1303 | 1304 | team_id = github_team.teams[each.value.team_name].id 1305 | repository = github_repository.repositories[each.value.repo_name].name 1306 | permission = "push" 1307 | } 1308 | 1309 | resource "github_branch_default" "branch_defaults" { 1310 | for_each = local.github_repos 1311 | 1312 | repository = each.key 1313 | branch = each.value.default_branch 1314 | } 1315 | 1316 | resource "github_repository_file" "repository_files" { 1317 | for_each = local.github_repos 1318 | 1319 | repository = each.key 1320 | branch = each.value.default_branch 1321 | file = ".github/CODEOWNERS" 1322 | content = format("* @asdf-community/%s\n", each.value.teams[0]) 1323 | commit_author = "github-actions[bot]" 1324 | commit_email = "github-actions[bot]@users.noreply.github.com" 1325 | } 1326 | --------------------------------------------------------------------------------