First Commit
This commit is contained in:
Executable
+94
@@ -0,0 +1,94 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
APP_DIR="/opt/bloomfeed"
|
||||
PROJECT_NAME="bloomfeed"
|
||||
|
||||
PURGE_DATA=false
|
||||
PURGE_SOURCE=false
|
||||
ASSUME_YES=false
|
||||
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--purge) PURGE_DATA=true ;;
|
||||
--purge-source) PURGE_SOURCE=true ;;
|
||||
--yes|-y) ASSUME_YES=true ;;
|
||||
--help|-h)
|
||||
echo "Usage: bash uninstall.sh [--purge] [--purge-source] [--yes]"
|
||||
echo " --purge Supprime aussi les volumes (base de données, storage)"
|
||||
echo " --purge-source Supprime aussi le code source et le .env dans ${APP_DIR} (nécessite --purge)"
|
||||
echo " --yes Ne pas demander de confirmation interactive"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Option inconnue: $arg (utilisez --help)"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ ! -d "${APP_DIR}" ]]; then
|
||||
echo "ERREUR: ${APP_DIR} introuvable — rien à désinstaller."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd "${APP_DIR}"
|
||||
|
||||
echo "==> Arrêt et suppression des conteneurs BloomFeed"
|
||||
sudo docker compose down --remove-orphans || true
|
||||
|
||||
if [[ "${PURGE_DATA}" == true ]]; then
|
||||
echo
|
||||
echo "ATTENTION: cette étape va supprimer DÉFINITIVEMENT :"
|
||||
echo " - la base de données MariaDB (tous les comptes, flux, articles)"
|
||||
echo " - les fichiers de storage de l'application"
|
||||
|
||||
if [[ "${ASSUME_YES}" != true ]]; then
|
||||
read -r -p "Tapez SUPPRIMER pour confirmer : " CONFIRM
|
||||
if [[ "${CONFIRM}" != "SUPPRIMER" ]]; then
|
||||
echo "Annulé. Les volumes de données sont conservés."
|
||||
PURGE_DATA=false
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${PURGE_DATA}" == true ]]; then
|
||||
echo "==> Suppression des volumes Docker"
|
||||
sudo docker volume rm \
|
||||
"${PROJECT_NAME}_db_data" \
|
||||
"${PROJECT_NAME}_app_storage" \
|
||||
"${PROJECT_NAME}_scheduler_storage" \
|
||||
2>/dev/null || true
|
||||
|
||||
echo "==> Suppression des images Docker construites"
|
||||
sudo docker rmi "${PROJECT_NAME}-app" "${PROJECT_NAME}-scheduler" 2>/dev/null || true
|
||||
fi
|
||||
else
|
||||
echo "==> Volumes de données conservés (relancez avec --purge pour les supprimer)"
|
||||
fi
|
||||
|
||||
if [[ "${PURGE_SOURCE}" == true ]]; then
|
||||
echo
|
||||
echo "ATTENTION: cette étape va supprimer ${APP_DIR}, y compris le fichier .env (secrets, mots de passe)."
|
||||
|
||||
if [[ "${ASSUME_YES}" != true ]]; then
|
||||
read -r -p "Tapez SUPPRIMER LE CODE pour confirmer : " CONFIRM_SRC
|
||||
if [[ "${CONFIRM_SRC}" != "SUPPRIMER LE CODE" ]]; then
|
||||
echo "Annulé. ${APP_DIR} est conservé."
|
||||
PURGE_SOURCE=false
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${PURGE_SOURCE}" == true ]]; then
|
||||
cd /
|
||||
echo "==> Suppression de ${APP_DIR}"
|
||||
sudo rm -rf "${APP_DIR}"
|
||||
fi
|
||||
else
|
||||
echo "==> Code source conservé dans ${APP_DIR} (relancez avec --purge-source pour le supprimer aussi)"
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "==> Désinstallation terminée."
|
||||
echo " Conteneurs/réseau : supprimés"
|
||||
echo " Volumes de données : $([[ "${PURGE_DATA}" == true ]] && echo supprimés || echo conservés)"
|
||||
echo " Code source (${APP_DIR}) : $([[ "${PURGE_SOURCE}" == true ]] && echo supprimé || echo conservé)"
|
||||
Reference in New Issue
Block a user