#!/usr/bin/env bash
# install_splat.sh — installs ~/.local/bin/splat with subcommand-aware caffeinate
# Replaces the function-based installer (install_splat_alias.sh).
set -euo pipefail
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
SPLAT_BIN="${HOME}/.local/bin/splat"
ZSHRC="${HOME}/.zshrc"
# ── 1. Create executable ──────────────────────────────────────────────────────
mkdir -p "$(dirname "${SPLAT_BIN}")"
cat > "${SPLAT_BIN}" <<EOF
#!/usr/bin/env bash
# splat — autosplat CLI wrapper, generated by scripts/install_splat.sh
AUTOSPLAT_REPO="${REPO_DIR}"
case "\${1:-}" in
watch|process|compress)
exec caffeinate -i uv run --project "\${AUTOSPLAT_REPO}" autosplat "\$@"
;;
*)
exec uv run --project "\${AUTOSPLAT_REPO}" autosplat "\$@"
;;
esac
EOF
chmod +x "${SPLAT_BIN}"
echo "Installed: ${SPLAT_BIN}"
# ── 2. Remove old function block from ~/.zshrc ────────────────────────────────
if grep -q "install_splat_alias\.sh" "${ZSHRC}" 2>/dev/null; then
sed -i '' '/install_splat_alias\.sh/d; /^splat() {/d' "${ZSHRC}"
echo "Removed old splat() function from ${ZSHRC}"
fi
# ── 3. Remove existing PATH block (idempotent re-run) ────────────────────────
if grep -q "BEGIN autosplat-splat-path" "${ZSHRC}" 2>/dev/null; then
sed -i '' '/# BEGIN autosplat-splat-path/,/# END autosplat-splat-path/d' "${ZSHRC}"
fi
# ── 4. Ensure ~/.local/bin in PATH ───────────────────────────────────────────
if ! grep -q "\.local/bin" "${ZSHRC}" 2>/dev/null; then
cat >> "${ZSHRC}" <<'PATHBLOCK'
# BEGIN autosplat-splat-path
export PATH="${HOME}/.local/bin:${PATH}"
# END autosplat-splat-path
PATHBLOCK
echo "Added ~/.local/bin to PATH in ${ZSHRC} — run: source ${ZSHRC}"
fi
# ── 5. Self-test ──────────────────────────────────────────────────────────────
echo ""
echo "Self-test:"
echo " file ${SPLAT_BIN} → $(file "${SPLAT_BIN}")"
if [[ ":${PATH}:" == *":${HOME}/.local/bin:"* ]]; then
echo " which splat → $(which splat 2>/dev/null || echo 'not found in PATH')"
else
echo " which splat → ~/.local/bin not in PATH yet — run: source ${ZSHRC}"
fi
echo ""
echo "Done. Run: source ${ZSHRC}"