#!/usr/bin/env bash
set -e

workspace_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
discovery_dir="$(mktemp -d)"
trap 'rm -rf "$discovery_dir"' EXIT

python3 - "$workspace_root" "$discovery_dir" <<'PY'
import json
import os
import pathlib
import subprocess
import sys

workspace_root = pathlib.Path(sys.argv[1])
discovery_dir = sys.argv[2]
environment = os.environ.copy()
environment["GALAXY_LOCAL_CONTROL_DISCOVERY_DIR"] = discovery_dir
result = subprocess.run(
    [
        "cargo",
        "run",
        "-p",
        "galaxy",
        "--bin",
        "galaxy-oss",
        "--features",
        "galaxy_control_cli",
        "--",
        "--galaxyctrl",
        "--output-format",
        "json",
        "instance",
        "list",
    ],
    cwd=workspace_root,
    env=environment,
    capture_output=True,
    text=True,
    timeout=600,
)
if result.returncode != 0:
    sys.stderr.write(result.stderr)
    sys.stderr.write(result.stdout)
    raise SystemExit(result.returncode)
try:
    output = json.loads(result.stdout)
except json.JSONDecodeError as error:
    sys.stderr.write(result.stderr)
    sys.stderr.write(f"invalid galaxyctrl JSON output: {error}: {result.stdout!r}\n")
    raise SystemExit(1)
if output != {"instances": []}:
    sys.stderr.write(result.stderr)
    sys.stderr.write(f"unexpected galaxyctrl output: {output!r}\n")
    raise SystemExit(1)
PY
