#!/usr/bin/env bash
docker network create -d bridge $1 2>/dev/null || true
mkdir -p $2/.cache/uv
mkdir -p $2/.cache/pre-commit
mkdir -p $2/.cache/pip
mkdir -p $2/.cache/pip-audit
mkdir -p $2/.cache/trivy
mkdir -p $2/.cursor
mkdir -p $2/.vscode-server
mkdir -p $2/.ssh
mkdir -p $2/.config/gcloud
mkdir -p $2/.aws
touch $2/.gitconfig

ENV_FILE=".devcontainer/.env"

touch $ENV_FILE
touch ./.env

# GITHUB_PERSONAL_ACCESS_TOKEN validation
github_token_line=$(grep "^GITHUB_PERSONAL_ACCESS_TOKEN=." "$ENV_FILE" 2>/dev/null)

if [ -n "$github_token_line" ]; then
  echo "Found GITHUB_PERSONAL_ACCESS_TOKEN"
else
  echo -e "\033[31m
❌ ERROR: GITHUB_PERSONAL_ACCESS_TOKEN is not set in $ENV_FILE!
❌ https://github.com/settings/personal-access-tokens
❌ Add it to $ENV_FILE like so:
❌ \t\tGITHUB_PERSONAL_ACCESS_TOKEN=<your_personal_access_token_here>
\033[0m"
  exit 1
fi

# GPG key validation
secret_keys=$(gpg --list-secret-keys --keyid-format=long 2>/dev/null)

# Check if the variable is non-empty
if [ -n "$secret_keys" ]; then
  echo "Found a GPG key"
else
  echo -e "\033[31m
❌ ERROR: Please configure a GPG key for git signoff:
❌ https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key
❌ Then, tell git about it:
❌ https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key
\033[0m"
  exit 1
fi

# git signingkey validation
signing_key=$(git config user.signingkey 2>/dev/null)

if [ -n "$signing_key" ]; then
  echo "Found a user.signingkey value"
else
  echo -e "\033[31m
❌ ERROR: Please tell git about your GPG key:
❌ https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key
\033[0m"
  exit 1
fi
