#!/usr/bin/env bash
set -euo pipefail
PWALL_DEFAULT_API_URL="${PWALL_DEFAULT_API_URL:-https://api.pwall.dev}"
PWALL_VERSION="${PWALL_VERSION:-0.1.0}"
PWALL_INSTALL_DIR="${PWALL_INSTALL_DIR:-$HOME/.local/bin}"
PWALL_DOWNLOAD_BASE="${PWALL_DOWNLOAD_BASE:-https://get.pwall.dev/releases}"
OS="$(uname -s | tr '[:upper:]' '[:lower:]')"
ARCH="$(uname -m)"
case "$OS-$ARCH" in
  darwin-arm64) ASSET="pwall-aarch64-apple-darwin" ;;
  darwin-x86_64) ASSET="pwall-x86_64-apple-darwin" ;;
  linux-x86_64|linux-amd64) ASSET="pwall-x86_64-unknown-linux-gnu" ;;
  *) echo "Unsupported: $OS $ARCH" >&2; exit 1 ;;
esac
URL="${PWALL_DOWNLOAD_BASE}/v${PWALL_VERSION}/${ASSET}.tar.gz"
TMP="$(mktemp -d)"
trap 'rm -rf "$TMP"' EXIT
echo "==> PWall ${PWALL_VERSION}"
curl -fsSL "$URL" -o "$TMP/pkg.tar.gz"
tar -xzf "$TMP/pkg.tar.gz" -C "$TMP"
mkdir -p "$PWALL_INSTALL_DIR"
install -m 755 "$TMP/pwall" "$PWALL_INSTALL_DIR/pwall"

# Must match `clients/cli` config_path() (directories::ProjectDirs "pwall").
case "$(uname -s)" in
  Darwin) CFG="$HOME/Library/Application Support/pwall/config.json" ;;
  *) CFG="${XDG_CONFIG_HOME:-$HOME/.config}/pwall/config.json" ;;
esac
LEGACY_CFG="$HOME/.config/pwall/config.json"
mkdir -p "$(dirname "$CFG")"
if [[ ! -f "$CFG" && -f "$LEGACY_CFG" ]]; then
  cp "$LEGACY_CFG" "$CFG"
  echo "Migrated config → $CFG"
fi
if [[ ! -f "$CFG" ]]; then
  printf '{"api_url":"%s"}\n' "$PWALL_DEFAULT_API_URL" >"$CFG"
elif grep -qE '127\.0\.0\.1|localhost' "$CFG" 2>/dev/null; then
  echo "Note: config still points at a local API. For production:"
  echo "  pwall auth login --api-url $PWALL_DEFAULT_API_URL"
fi
echo "Installed $PWALL_INSTALL_DIR/pwall (config $CFG, default API $PWALL_DEFAULT_API_URL)"
echo "Next: pwall auth login && pwall setup"
