#!/usr/bin/env bash
set -euo pipefail

root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd -P)"
guard="${root}/guardrails/repository/no-retired-desktop-extension.sh"
fixture="$(mktemp -d)"
trap 'rm -rf "${fixture}"' EXIT

expect_failure() {
  local label="$1"
  if AGENTTEAM_RETIRED_DESKTOP_EXTENSION_GUARD_ROOT="${fixture}" bash "${guard}" >/dev/null 2>&1; then
    echo "expected ${label} fixture to fail" >&2
    exit 1
  fi
}

mkdir -p \
  "${fixture}/desktop/internal/api/exec" \
  "${fixture}/desktop/internal/agent" \
  "${fixture}/desktop/internal/execruntimeenv" \
  "${fixture}/desktop/internal/token" \
  "${fixture}/desktop/integration/extensione2e" \
  "${fixture}/internal/api/extension"
printf 'package execruntimeenv\nconst retired = "AGENTTEAM_EXTENSION_TOKEN_FILE"\n' \
  >"${fixture}/desktop/internal/execruntimeenv/env.go"
printf 'package extension\n' >"${fixture}/internal/api/extension/routes.go"
AGENTTEAM_RETIRED_DESKTOP_EXTENSION_GUARD_ROOT="${fixture}" bash "${guard}" >/dev/null

mkdir -p "${fixture}/desktop/internal/api/extension"
printf 'package extension\n' >"${fixture}/desktop/internal/api/extension/routes.go"
expect_failure "retired Desktop Extension package"
rm "${fixture}/desktop/internal/api/extension/routes.go"
rmdir "${fixture}/desktop/internal/api/extension"

printf 'package token\ntype ExtensionToken struct{}\n' \
  >"${fixture}/desktop/internal/token/stale.go"
expect_failure "retired Desktop Extension token"
rm "${fixture}/desktop/internal/token/stale.go"

printf 'package exec\nconst path = "/api/internal/ext/servers/"\n' \
  >"${fixture}/desktop/internal/api/exec/stale.go"
expect_failure "retired Desktop Extension route"
rm "${fixture}/desktop/internal/api/exec/stale.go"

printf 'package extensione2e\nconst command = "agentteam extension"\n' \
  >"${fixture}/desktop/integration/extensione2e/stale_test.go"
expect_failure "retired Desktop Extension command"
rm "${fixture}/desktop/integration/extensione2e/stale_test.go"

printf 'package agent\nconst token = "AGENTTEAM_EXTENSION_TOKEN_FILE"\n' \
  >"${fixture}/desktop/internal/agent/stale.go"
expect_failure "retired Desktop Extension environment"
rm "${fixture}/desktop/internal/agent/stale.go"

printf 'package exec\nconst domain = "pr-watch"\n' \
  >"${fixture}/desktop/internal/api/exec/stale.go"
expect_failure "retired Desktop PR watch Exec domain"

echo "Retired Desktop Extension absence guard tests passed."
