1
0
postauto/uninstall.sh
2025-08-13 08:32:08 +02:00

149 lines
4.9 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
set -Eeuo pipefail
# ────────── Helpers & couleurs ──────────
if [ -t 1 ]; then
ROUGE='\e[31m'; VERT='\e[32m'; JAUNE='\e[33m'; BLEU='\e[34m'; NORMAL='\e[0m'
else
ROUGE=''; VERT=''; JAUNE=''; BLEU=''; NORMAL=''
fi
log() { printf "${BLEU}%s${NORMAL}\n" "$*"; }
ok() { printf "${VERT}%s${NORMAL}\n" "$*"; }
warn() { printf "${JAUNE}%s${NORMAL}\n" "$*"; }
err() { printf "${ROUGE}%s${NORMAL}\n" "$*"; }
confirm() { # confirm "message" -> 0 si oui
read -r -p "$1 (y/N) : " _ans
[[ "${_ans:-}" =~ ^[Yy]$ ]]
}
safe_rm_file(){ # supprime si fichier et sous $HOME
local f="$1"
[[ -n "$f" && -f "$f" && "$f" == "$HOME/"* ]] && rm -f -- "$f"
}
safe_rm_dir(){ # supprime si dossier et sous $HOME
local d="$1"
[[ -n "$d" && -d "$d" && "$d" == "$HOME/"* ]] && rm -rf -- "$d"
}
# ────────── Paths ──────────
BIN_DIR="$HOME/bin"
AUTOPOST_DIR="$HOME/autopost"
BASHRC_FILE="$HOME/.bashrc"
BASH_COMPLETION_DIR="$HOME/.bash_completion.d"
CONF_SH="$AUTOPOST_DIR/conf.sh"
# ────────── Charger conf.sh (facultatif) pour récupérer DOSSIER_* / DB_FILE ──────────
if [ -f "$CONF_SH" ]; then
# conf.sh ne fait que définir des variables : sourcing OK
# shellcheck source=/dev/null
. "$CONF_SH"
else
warn "conf.sh introuvable, certaines suppressions (DOSSIER_*) pourront être ignorées."
fi
# ────────── Proposer darrêter postauto si présent ──────────
if [ -x "$BIN_DIR/postauto" ]; then
if confirm "Arrêter 'postauto' avant désinstallation ?"; then
"$BIN_DIR/postauto" stop || true
fi
fi
# ────────── Supprimer binaires installés dans $HOME/bin ──────────
log "Suppression des binaires…"
BIN_LIST=(
"$BIN_DIR/mediainfo"
"$BIN_DIR/sqlite3"
"$BIN_DIR/jq"
"$BIN_DIR/nyuu"
"$BIN_DIR/parpar"
"$BIN_DIR/postauto"
"$BIN_DIR/BDInfo"
"$BIN_DIR/BDInfoDataSubstractor"
"$BIN_DIR/7z"
)
for f in "${BIN_LIST[@]}"; do
if [ -f "$f" ]; then
echo " - $f"
safe_rm_file "$f"
fi
done
# ────────── Supprimer scripts autopost ──────────
log "Suppression des scripts autopost…"
safe_rm_file "$AUTOPOST_DIR/common.sh"
safe_rm_file "$AUTOPOST_DIR/posteur.sh"
safe_rm_file "$AUTOPOST_DIR/analyzer.sh"
# Fichiers Node optionnels (server/db/config, node_modules, sessions, logs)
if confirm "Supprimer aussi les fichiers Node (server.js, db.js, config.js), node_modules et sessions ?"; then
safe_rm_file "$AUTOPOST_DIR/server.js"
safe_rm_file "$AUTOPOST_DIR/db.js"
safe_rm_file "$AUTOPOST_DIR/config.js"
safe_rm_dir "$AUTOPOST_DIR/node_modules"
safe_rm_dir "$AUTOPOST_DIR/sessions"
fi
# ────────── Dossiers médias (depuis conf.sh si dispo) ──────────
# Dossier NFO
if [ -n "${DOSSIER_NFO:-}" ] && [ -d "${DOSSIER_NFO:-}" ]; then
if confirm "Supprimer le dossier NFO (${DOSSIER_NFO}) ?"; then
safe_rm_dir "${DOSSIER_NFO}"
fi
fi
# Supprimer la conf ?
if [ -f "$CONF_SH" ] && confirm "Supprimer votre fichier de conf (${CONF_SH}) ?"; then
safe_rm_file "$CONF_SH"
fi
# Supprimer la base de données SQLite ?
if [ -n "${DB_FILE:-}" ] && [ -f "${DB_FILE:-}" ] && confirm "Supprimer la base SQLite (${DB_FILE}) ?"; then
safe_rm_file "$DB_FILE"
fi
# Supprimer les NZB ?
if confirm "Supprimer vos NZB (ATTENTE & FINIS) ?"; then
safe_rm_dir "${DOSSIER_NZB_ATTENTE:-}"
safe_rm_dir "${DOSSIER_NZB_FINAL:-}"
fi
# Si dossier autopost devenu vide → supprimer
if [ -d "$AUTOPOST_DIR" ] && [ -z "$(ls -A "$AUTOPOST_DIR" 2>/dev/null)" ]; then
echo "Suppression du dossier $AUTOPOST_DIR (vide)."
rmdir -- "$AUTOPOST_DIR" || true
fi
# ────────── Nettoyage complétion bash ──────────
DEBUT_MARKER="# DEBUT COMPLETION POSTAUTO"
FIN_MARKER="# FIN COMPLETION POSTAUTO"
# 1) Supprimer l'ancien bloc directement dans ~/.bashrc
if [ -f "$BASHRC_FILE" ] && grep -q "$DEBUT_MARKER" "$BASHRC_FILE"; then
echo "Suppression de l'ancien bloc de complétion dans $BASHRC_FILE"
cp "$BASHRC_FILE" "${BASHRC_FILE}.bak"
sed -i "/$DEBUT_MARKER/,/$FIN_MARKER/d" "$BASHRC_FILE"
ok "Bloc de complétion supprimé (backup: ${BASHRC_FILE}.bak)."
fi
# 2) Supprimer le fichier de complétion moderne et sa ligne 'source' éventuelle
COMP_FILE="$BASH_COMPLETION_DIR/postauto"
if [ -f "$COMP_FILE" ]; then
echo "Suppression $COMP_FILE"
rm -f -- "$COMP_FILE"
fi
if [ -f "$BASHRC_FILE" ]; then
# enlève la ligne de sourcing si présente
if grep -q '\.bash_completion.d/postauto' "$BASHRC_FILE"; then
cp "$BASHRC_FILE" "${BASHRC_FILE}.bak2"
sed -i '\|\.bash_completion\.d/postauto|d' "$BASHRC_FILE"
ok "Ligne de sourcing supprimée (backup: ${BASHRC_FILE}.bak2)."
fi
fi
echo "Suppression du script après exécution…"
rm -- "$0" 2>/dev/null || true
ok "Désinstallation terminée."