provider "aws" {
  region = var.aws_region
}

# Terraform backends cannot contain interpolations
terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    key     = "prod/github/orchard-suite-oa-applications/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

module "github_repositories" {
  source = "git@github.com:theorchard/terraform-github.git//?ref=2.1.3"
  github_repository_names = {

    orchard-suite-oa-applications = {
      branch_protection_enabled        = true
      branch_protection_enforce_admins = true
      repo_auto_init                   = true
      archived_repository              = false
      github_code_owner_reviews        = true
      visibility                       = "private"
      description                      = "Monorepo for react applications for OA"
      has_downloads                    = false,
      homepage_url                     = "https://github.com/theorchard/orchard-suite-oa-applications"
    }
  }
  github_push_teams = [
    "mergers",
    "suite-oa-maintainers",
  ]
}

resource "github_branch_protection" "branch_next_protection" {
  # checkov:skip=CKV_GIT_5:We required only one reviewer in the established workflow.
  # checkov:skip=CKV_GIT_6:We don't require Git commits to be GPG signed.

  repository_id  = module.github_repositories.github_repository_node_id["orchard-suite-oa-applications"]
  pattern        = "next"
  enforce_admins = true

  required_status_checks {
    strict = true
  }

  required_pull_request_reviews {
    dismiss_stale_reviews      = true
    require_code_owner_reviews = true
  }

  lifecycle {
    ignore_changes = [
      required_status_checks,
    ]
  }
}
