#!/usr/bin/env bash

# Configure shell.
set -u -e

# Generate GitHub token from GitHub App credentials if GITHUB_API_KEY is not set
if [ -z "${GITHUB_API_KEY:-}" ]; then
  if [ -n "${GITHUB_APP_CLIENT_ID:-}" ] && [ -n "${GITHUB_APP_INSTALLATION_ID:-}" ] && [ -n "${GITHUB_APP_PRIVATE_KEY:-}" ]; then
    echo "Generating GitHub token from GitHub App credentials..."
    GITHUB_API_KEY=$(python3 -c "
import github
auth = github.Auth.AppAuth('${GITHUB_APP_CLIENT_ID}', '''${GITHUB_APP_PRIVATE_KEY}''')
gi = github.GithubIntegration(auth=auth)
print(gi.get_access_token(${GITHUB_APP_INSTALLATION_ID}).token)
")
  else
    echo "Error: Either GITHUB_API_KEY or GitHub App credentials must be set"
    exit 1
  fi
fi

MODULES=(
  terraform-airflow
  terraform-aws-accounts-map
  terraform-aws-backup
  terraform-aws-waf
  terraform-chef-bootstrap
  terraform-datadog
  terraform-dynamodb
  terraform-default-tags
  terraform-ecr
  terraform-efs
  terraform-elasticache
  terraform-elasticsearch
  terraform-emr
  terraform-fargate
  terraform-github
  terraform-iam-policies
  terraform-kinesis
  terraform-lambda
  terraform-managed-kafka
  terraform-owsrequest
  terraform-rds
  terraform-sagemaker-notebook
  terraform-s3
  terraform-secrets-manager
  terraform-sentry
  terraform-sns
  terraform-sqs
  terraform-vmware
)

for MODULE in "${MODULES[@]}"
do
  git clone "https://x-access-token:${GITHUB_API_KEY}@github.com/theorchard/${MODULE}" "scan/modules/${MODULE}"
done
