repository_creation_helper/main.tf (95 lines of code) (raw):

locals { github_repository_name = "terraform-${var.module_provider}-${var.module_id}" module_type = split("-", var.module_id)[1] module_type_name = local.module_type == "res" ? "Resource" : (local.module_type == "ptn" ? "Pattern" : "Utility") github_reposisory_description = "Terraform Azure Verified ${local.module_type_name} Module for ${var.module_name}" secondary_owner_github_handle = var.github_repository_metadata["AVM_OWNER_SECONDARY_GITHUB_HANDLE"] team_maintainers = merge({ primary = var.module_owner_github_handle }, local.secondary_owner_github_handle != "" ? { secondary = local.secondary_owner_github_handle } : {}) } import { id = local.github_repository_name to = github_repository.this } resource "github_repository" "this" { name = local.github_repository_name description = local.github_reposisory_description auto_init = false visibility = "public" homepage_url = "https://registry.terraform.io/modules/Azure/${var.module_id}" template { owner = "Azure" repository = "terraform-azurerm-avm-template" include_all_branches = false } has_issues = true has_discussions = false has_projects = false has_wiki = false allow_merge_commit = false allow_squash_merge = true allow_rebase_merge = false allow_auto_merge = true delete_branch_on_merge = true allow_update_branch = true vulnerability_alerts = false security_and_analysis { secret_scanning { status = "enabled" } secret_scanning_push_protection { status = "enabled" } } } resource "github_team" "owners" { name = "${var.module_id}-${var.github_owner_team_name_postfix}" description = "Owners of the ${var.module_id} Azure Verified Module." privacy = "closed" create_default_maintainer = true } resource "github_team" "contributors" { name = "${var.module_id}-${var.github_contributor_team_name_postfix}" description = "Contributors of the ${var.module_id} Azure Verified Module." privacy = "closed" create_default_maintainer = true } resource "github_team_membership" "owners_maintainer" { for_each = local.team_maintainers team_id = github_team.owners.id username = each.value role = "maintainer" } resource "github_team_membership" "contributors_maintainer" { for_each = local.team_maintainers team_id = github_team.contributors.id username = each.value role = "maintainer" } data "github_team" "avm_core" { for_each = var.maintainer_teams slug = each.value } resource "github_team_repository" "avm_core" { for_each = data.github_team.avm_core team_id = each.value.id repository = github_repository.this.name permission = "maintain" } resource "github_team_repository" "owners_team" { team_id = github_team.owners.id repository = github_repository.this.name permission = "maintain" } resource "github_team_repository" "contributors_team" { team_id = github_team.contributors.id repository = github_repository.this.name permission = "push" } resource "github_actions_variable" "meta_date" { for_each = { for key, value in var.github_repository_metadata : key => value if value != "" } repository = github_repository.this.name variable_name = each.key value = each.value }