diff --git a/scripts/clean_install.sh b/scripts/clean_install.sh new file mode 100644 index 0000000..8cadafe --- /dev/null +++ b/scripts/clean_install.sh @@ -0,0 +1,111 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Virtuality clean install helper. +# Default mode preserves user data: VM disks, ISO files, uploaded disk images and backups. +# Use --purge-data only when you intentionally want to remove Virtuality data directories too. + +PURGE_DATA=0 +YES=0 + +for arg in "$@"; do + case "$arg" in + --purge-data) PURGE_DATA=1 ;; + --yes|-y) YES=1 ;; + *) echo "Unknown argument: $arg" >&2; exit 2 ;; + esac +done + +if [[ "$EUID" -ne 0 ]]; then + exec sudo bash "$0" "$@" +fi + +RED="\033[31m" +GREEN="\033[32m" +YELLOW="\033[33m" +BOLD="\033[1m" +RESET="\033[0m" + +say() { echo -e "${GREEN}✓${RESET} $*"; } +warn() { echo -e "${YELLOW}!${RESET} $*"; } +remove_path() { + local path="$1" + if [[ -e "$path" || -L "$path" ]]; then + rm -rf "$path" + say "removed: $path" + else + warn "not found: $path" + fi +} + +cat </dev/null || true +systemctl disable virtuality-web.service 2>/dev/null || true + +remove_path /etc/systemd/system/virtuality-web.service +systemctl daemon-reload || true + +remove_path /opt/virtuality/web +remove_path /opt/virtuality/venv +remove_path /var/lib/virtuality/config +remove_path /var/lib/virtuality/update +remove_path /var/log/virtuality/update.log +find /var/log/virtuality -maxdepth 1 -type f -name 'install_web_panel_*.log' -delete 2>/dev/null || true +say "old installer logs removed" + +if [[ "$PURGE_DATA" -eq 1 ]]; then + remove_path /var/lib/virtuality/iso + remove_path /var/lib/virtuality/images + remove_path /var/lib/virtuality/disk-images + remove_path /var/lib/virtuality/backups + remove_path /var/lib/virtuality/network +fi + +mkdir -p /opt/virtuality /var/log/virtuality /var/lib/virtuality +say "base directories recreated" + +echo +say "Clean install cleanup finished. Run: sudo bash scripts/install_web_panel.sh"