95 lines
2.7 KiB
Bash
Executable File
95 lines
2.7 KiB
Bash
Executable File
#!/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 Also remove the volumes (database, storage)"
|
|
echo " --purge-source Also remove the source code and the .env in ${APP_DIR}"
|
|
echo " --yes Skip interactive confirmations"
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown option: $arg (use --help)"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [[ ! -d "${APP_DIR}" ]]; then
|
|
echo "ERROR: ${APP_DIR} not found — nothing to uninstall."
|
|
exit 1
|
|
fi
|
|
|
|
cd "${APP_DIR}"
|
|
|
|
echo "==> Stopping and removing the BloomFeed containers"
|
|
sudo docker compose down --remove-orphans || true
|
|
|
|
if [[ "${PURGE_DATA}" == true ]]; then
|
|
echo
|
|
echo "WARNING: this step will PERMANENTLY delete:"
|
|
echo " - the MariaDB database (all accounts, feeds, articles)"
|
|
echo " - the application storage files"
|
|
|
|
if [[ "${ASSUME_YES}" != true ]]; then
|
|
read -r -p "Type DELETE to confirm: " CONFIRM
|
|
if [[ "${CONFIRM}" != "DELETE" ]]; then
|
|
echo "Cancelled. Data volumes are kept."
|
|
PURGE_DATA=false
|
|
fi
|
|
fi
|
|
|
|
if [[ "${PURGE_DATA}" == true ]]; then
|
|
echo "==> Removing Docker volumes"
|
|
sudo docker volume rm \
|
|
"${PROJECT_NAME}_db_data" \
|
|
"${PROJECT_NAME}_app_storage" \
|
|
"${PROJECT_NAME}_scheduler_storage" \
|
|
2>/dev/null || true
|
|
|
|
echo "==> Removing built Docker images"
|
|
sudo docker rmi "${PROJECT_NAME}-app" "${PROJECT_NAME}-scheduler" 2>/dev/null || true
|
|
fi
|
|
else
|
|
echo "==> Data volumes kept (re-run with --purge to remove them)"
|
|
fi
|
|
|
|
if [[ "${PURGE_SOURCE}" == true ]]; then
|
|
echo
|
|
echo "WARNING: this step will delete ${APP_DIR}, including the .env file (secrets, passwords)."
|
|
|
|
if [[ "${ASSUME_YES}" != true ]]; then
|
|
read -r -p "Type DELETE THE CODE to confirm: " CONFIRM_SRC
|
|
if [[ "${CONFIRM_SRC}" != "DELETE THE CODE" ]]; then
|
|
echo "Cancelled. ${APP_DIR} is kept."
|
|
PURGE_SOURCE=false
|
|
fi
|
|
fi
|
|
|
|
if [[ "${PURGE_SOURCE}" == true ]]; then
|
|
cd /
|
|
echo "==> Removing ${APP_DIR}"
|
|
sudo rm -rf "${APP_DIR}"
|
|
fi
|
|
else
|
|
echo "==> Source code kept in ${APP_DIR} (re-run with --purge-source to remove it too)"
|
|
fi
|
|
|
|
echo
|
|
echo "==> Uninstall finished."
|
|
echo " Containers/network : removed"
|
|
echo " Data volumes : $([[ "${PURGE_DATA}" == true ]] && echo removed || echo kept)"
|
|
echo " Source (${APP_DIR}): $([[ "${PURGE_SOURCE}" == true ]] && echo removed || echo kept)"
|