Files
cAIc/scripts/uninstall.sh
T

99 lines
3.2 KiB
Bash

#!/usr/bin/env bash
# cAIc — bare-metal/systemd uninstall
# Removes the cAIc install deployed via the README Fresh Install path.
# Run as root or with sudo. Use -y to skip prompts.
set -euo pipefail
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
SKIP_PROMPT=false
[ "${1:-}" = "-y" ] && SKIP_PROMPT=true
prompt_yn() {
if $SKIP_PROMPT; then return 0; fi
local msg=$1; local default=${2:-n}
if [[ "$default" == "y" ]]; then
read -p "$msg [Y/n] " r; [[ -z "$r" || "$r" =~ ^[Yy] ]]
else
read -p "$msg [y/N] " r; [[ "$r" =~ ^[Yy] ]]
fi
}
warn() { echo -e "${YELLOW}$1${NC}"; }
echo "cAIc Bare-metal / systemd uninstall"
echo "===================================="
# ---- Step 1: systemd service ----
SERVICE_FILE="/etc/systemd/system/caic.service"
if [ -f "$SERVICE_FILE" ]; then
warn "Stopping and disabling caic service..."
systemctl stop caic 2>/dev/null || true
systemctl disable caic 2>/dev/null || true
if prompt_yn "Remove caic systemd service?" n; then
rm -f "$SERVICE_FILE" /etc/systemd/system/caic.service
systemctl daemon-reload
echo " Removed systemd service"
fi
else
echo " Skipped: no systemd service at $SERVICE_FILE"
fi
# ---- Step 2: /opt/caic directory ----
CAIC_DIR="/opt/caic"
if [ -d "$CAIC_DIR" ]; then
if prompt_yn "Remove cAIc installation directory ($CAIC_DIR)?" n; then
rm -rf "$CAIC_DIR"
echo " Removed $CAIC_DIR"
else
warn " Skipped: $CAIC_DIR preserved"
fi
else
echo " Skipped: $CAIC_DIR does not exist"
fi
# ---- Step 3: AMQP secret file ----
if [ -f "/home/gramps/.caic_amqp_secret" ]; then
if prompt_yn "Remove AMQP secret file (/home/gramps/.caic_amqp_secret)?" n; then
rm -f /home/gramps/.caic_amqp_secret
echo " Removed AMQP secret"
fi
fi
# ---- Step 4: Upload temp directory ----
UPLOAD_DIR="/tmp/caic_uploads"
if [ -d "$UPLOAD_DIR" ]; then
if prompt_yn "Remove upload temp directory ($UPLOAD_DIR)?" n; then
rm -rf "$UPLOAD_DIR"
echo " Removed upload temp"
fi
fi
# ---- Step 5: hardware_state.json in cwd ----
if [ -f "hardware_state.json" ]; then
if prompt_yn "Remove cached hardware state?" n; then
rm -f hardware_state.json
echo " Removed cached hardware state"
fi
fi
# ---- Step 6: pip packages if user wants ----
if command -v pip &>/dev/null; then
if prompt_yn "Attempt to uninstall cAIc-related pip packages?" n; then
pip uninstall -y fastapi uvicorn httpx psutil aio-pika jinja2 python-multipart pypdf 2>/dev/null || true
echo " Uninstalled pip packages"
fi
fi
echo ""
echo -e "${GREEN}cAIc bare-metal/uninstall complete.${NC}"
echo "The following may remain:"
echo " - /opt/caic/ (if you chose to preserve)"
echo " - ~/.caic_amqp_secret (if preserved)"
echo " - hardware_state.json (if preserved)"
echo " - installed pip packages (if you chose to skip)"
echo " - Python venv at /opt/caic/venv (removed with /opt/caic)"
echo ""
echo "Caic data stored outside install:"
echo " - caic.db (if configured via CAIC_DB_PATH)"
echo " - claude/opencode .jsonc updates (not tracked by this script)"