#!/usr/bin/env bash
# Isolated synthetic Forgejo fixture for viewed-after-push.e2e.ts.
# Run the container in a terminal and stop/remove it after the proof.
set -euo pipefail
fixture_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
case "${1:-help}" in
  server)
    exec docker run --name viewed-proof-forgejo \
      -p 127.0.0.1:34151:3000 \
      -e USER_UID=1000 -e USER_GID=1000 \
      -e FORGEJO__security__INSTALL_LOCK=true \
      -e FORGEJO__server__ROOT_URL=http://127.0.0.1:34151/ \
      -e FORGEJO__server__HTTP_PORT=3000 \
      -e FORGEJO__server__SSH_DOMAIN=127.0.0.1 \
      -e FORGEJO__database__DB_TYPE=sqlite3 \
      -e FORGEJO__service__DISABLE_REGISTRATION=true \
      codeberg.org/forgejo/forgejo:12
    ;;
  auth)
    docker exec --user git viewed-proof-forgejo forgejo admin user create \
      --username reviewer --password Synthetic-proof-24151 \
      --email reviewer@example.invalid --admin --must-change-password=false
    docker exec --user git viewed-proof-forgejo forgejo admin user generate-access-token \
      --username reviewer --token-name proof --scopes all --raw > "$fixture_dir/forgejo-token"
    chmod 600 "$fixture_dir/forgejo-token"
    curl -fL https://dl.gitea.com/tea/0.16.0/tea-0.16.0-linux-amd64 -o "$fixture_dir/tea"
    chmod +x "$fixture_dir/tea"
    mkdir -p "$fixture_dir/config"
    XDG_CONFIG_HOME="$fixture_dir/config" "$fixture_dir/tea" login add --name proof \
      --url http://127.0.0.1:34151 --token "$(cat "$fixture_dir/forgejo-token")"
    ;;
  prove)
    export XDG_CONFIG_HOME="$fixture_dir/config"
    export PROOF_TOKEN_FILE="$fixture_dir/forgejo-token"
    export PROOF_TEA_BINARY="$fixture_dir/tea"
    export T3CODE_DEV_SEED=0
    export T3_SCENARIO_INHERIT_ENV=XDG_CONFIG_HOME,T3CODE_DEV_SEED
    exec vp run scenarios:prove scripts/scenarios/viewed-after-push.e2e.ts \
      --base 8656cdb3a93883e06fd2786f1cb921571a04da11 \
      --head 917fd011f7dbd72a030281608730f795e2746a61 \
      --upload-command 'ghdrop upload'
    ;;
  cleanup)
    docker stop viewed-proof-forgejo
    docker rm -v viewed-proof-forgejo
    ;;
  *) echo 'Run: fixture-setup.sh server; in a second terminal: fixture-setup.sh auth; from current-main checkout: fixture-setup.sh prove; finally: fixture-setup.sh cleanup.' ;;
esac
