2025-08-13 08:32:08 +02:00
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
set -Eeuo pipefail
|
2025-02-01 22:23:51 +01:00
|
|
|
|
|
2025-08-13 08:32:08 +02:00
|
|
|
|
# ────────── 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 ──────────
|
2025-02-01 22:23:51 +01:00
|
|
|
|
BIN_DIR="$HOME/bin"
|
|
|
|
|
|
AUTOPOST_DIR="$HOME/autopost"
|
2025-08-13 08:32:08 +02:00
|
|
|
|
BASHRC_FILE="$HOME/.bashrc"
|
|
|
|
|
|
BASH_COMPLETION_DIR="$HOME/.bash_completion.d"
|
|
|
|
|
|
CONF_SH="$AUTOPOST_DIR/conf.sh"
|
2025-02-01 22:23:51 +01:00
|
|
|
|
|
2025-08-13 08:32:08 +02:00
|
|
|
|
# ────────── 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 d’arrê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
|
2025-02-01 22:23:51 +01:00
|
|
|
|
|
2025-08-13 08:32:08 +02:00
|
|
|
|
# ────────── 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
|
2025-02-01 22:23:51 +01:00
|
|
|
|
done
|
|
|
|
|
|
|
2025-08-13 08:32:08 +02:00
|
|
|
|
# ────────── 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"
|
2025-02-01 22:23:51 +01:00
|
|
|
|
|
2025-08-13 08:32:08 +02:00
|
|
|
|
# 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"
|
2025-02-01 22:23:51 +01:00
|
|
|
|
fi
|
|
|
|
|
|
|
2025-08-13 08:32:08 +02:00
|
|
|
|
# ────────── 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
|
2025-02-01 22:23:51 +01:00
|
|
|
|
fi
|
|
|
|
|
|
|
2025-08-13 08:32:08 +02:00
|
|
|
|
# Supprimer la conf ?
|
|
|
|
|
|
if [ -f "$CONF_SH" ] && confirm "Supprimer votre fichier de conf (${CONF_SH}) ?"; then
|
|
|
|
|
|
safe_rm_file "$CONF_SH"
|
2025-02-01 22:23:51 +01:00
|
|
|
|
fi
|
|
|
|
|
|
|
2025-08-13 08:32:08 +02:00
|
|
|
|
# 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"
|
2025-02-01 22:23:51 +01:00
|
|
|
|
fi
|
|
|
|
|
|
|
2025-08-13 08:32:08 +02:00
|
|
|
|
# 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
|
2025-02-01 22:23:51 +01:00
|
|
|
|
|
2025-08-13 08:32:08 +02:00
|
|
|
|
# ────────── Nettoyage complétion bash ──────────
|
2025-02-01 22:23:51 +01:00
|
|
|
|
DEBUT_MARKER="# DEBUT COMPLETION POSTAUTO"
|
|
|
|
|
|
FIN_MARKER="# FIN COMPLETION POSTAUTO"
|
|
|
|
|
|
|
2025-08-13 08:32:08 +02:00
|
|
|
|
# 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
|
2025-02-01 22:23:51 +01:00
|
|
|
|
fi
|
|
|
|
|
|
|
2025-08-13 08:32:08 +02:00
|
|
|
|
echo "Suppression du script après exécution…"
|
|
|
|
|
|
rm -- "$0" 2>/dev/null || true
|
|
|
|
|
|
|
|
|
|
|
|
ok "Désinstallation terminée."
|