#!/usr/bin/env sh
# Muse CLI installer — installs muse into a dedicated Python venv.
# Generated by MuseHub https://staging.musehub.ai
# Run: curl -fsSL https://staging.musehub.ai/install.sh | sh
set -euf

MUSEHUB_URL="https://staging.musehub.ai"
MUSE_VERSION="0.2.0rc11"
VENV_DIR="${MUSE_VENV_DIR:-$HOME/.local/share/muse/venv}"
BIN_DIR="${MUSE_INSTALL_DIR:-$HOME/.local/bin}"
SDIST_URL="${MUSEHUB_URL}/releases/muse-${MUSE_VERSION}.tar.gz"

# ── Require Python 3.14+ ───────────────────────────────────────────────────────
PYTHON=""
for candidate in python3.14 python3; do
  if command -v "$candidate" >/dev/null 2>&1; then
    ver="$("$candidate" -c 'import sys; print("%d%02d" % sys.version_info[:2])')"
    if [ "$ver" -ge 314 ]; then
      PYTHON="$candidate"
      break
    fi
  fi
done

if [ -z "$PYTHON" ]; then
  printf 'Error: Muse requires Python 3.14 or later.\n' >&2
  printf 'Install it from https://python.org and re-run this script.\n' >&2
  exit 1
fi

printf 'Using %s\n' "$($PYTHON --version)"

# ── Create venv ────────────────────────────────────────────────────────────────
printf 'Creating venv at %s ...\n' "$VENV_DIR"
"$PYTHON" -m venv "$VENV_DIR"

# ── Download and install muse sdist ───────────────────────────────────────────
printf 'Downloading Muse %s from %s ...\n' "$MUSE_VERSION" "$MUSEHUB_URL"
TMP_DIR="$(mktemp -d)"
cleanup() { rm -rf "$TMP_DIR"; }
trap cleanup EXIT

curl -fsSL "$SDIST_URL" -o "$TMP_DIR/muse.tar.gz"
"$VENV_DIR/bin/pip" install --quiet "$TMP_DIR/muse.tar.gz"

# ── Symlink binary ─────────────────────────────────────────────────────────────
mkdir -p "$BIN_DIR"
ln -sf "$VENV_DIR/bin/muse" "$BIN_DIR/muse"

printf '\nMuse %s installed.\n' "$MUSE_VERSION"
printf 'Binary: %s/muse\n' "$BIN_DIR"
printf 'Venv:   %s\n' "$VENV_DIR"
printf '\nMake sure %s is on your PATH, then run: muse --version\n' "$BIN_DIR"
