Zum Inhalt

pipeline/scripts/install_splat.sh

#!/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}"