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

VENV=/workspace/venv
HARNESS=/workspace/harness
SKILL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
SDK_SPEC="${HL_SDK_SPEC:-highlighter-sdk}"

if [ ! -x "$VENV/bin/python" ]; then
  /usr/bin/python3.12 -m venv "$VENV"
fi

"$VENV/bin/pip" install --quiet --no-cache-dir \
  "$SDK_SPEC" fastavro zstd backports.zstd

mkdir -p "$HARNESS"
install -m 0644 "$SKILL_DIR/SKILL.md" "$HARNESS/SKILL.md"
install -m 0644 "$SKILL_DIR/SKILL.md" /workspace/SKILL.md

for src in "$SKILL_DIR"/scripts/*; do
  script="$(basename "$src")"
  if [ ! -f "$src" ]; then
    continue
  fi
  if [ "$script" = bootstrap ]; then
    continue
  fi
  install -m 0755 "$src" "$HARNESS/$script"
  sed -i "1s|.*|#!$VENV/bin/python|" "$HARNESS/$script"
  ln -sf "$HARNESS/$script" "/usr/local/bin/$script"
done

ENDPOINT="${HL_WEB_GRAPHQL_ENDPOINT:-}"

if [ -n "$ENDPOINT" ]; then
  cat > /usr/local/bin/hl <<EOF
#!/usr/bin/env bash
export HL_WEB_GRAPHQL_ENDPOINT="$ENDPOINT"
exec "$VENV/bin/hl" "\$@"
EOF
  chmod 0755 /usr/local/bin/hl

  cat > /etc/profile.d/highlighter.sh <<EOF
export HL_WEB_GRAPHQL_ENDPOINT="$ENDPOINT"
EOF
else
  ln -sf "$VENV/bin/hl" /usr/local/bin/hl
fi

if ! command -v duckdb >/dev/null 2>&1; then
  wget -qO /tmp/duckdb.zip \
    https://github.com/duckdb/duckdb/releases/download/v1.0.0/duckdb_cli-linux-amd64.zip
  unzip -oq /tmp/duckdb.zip -d /usr/local/bin
  chmod +x /usr/local/bin/duckdb
fi

echo "highlighter-sdk $("$VENV/bin/python" -c 'import highlighter; print(highlighter.__version__)')"
echo "duckdb $(duckdb --version 2>&1 | head -1)"
echo "hl $(command -v hl)"
