#!/usr/bin/env bash # Deletes and recreates all WROLPi Python virtual environments. # This script requires internet access for pip install. # # Usage: reset_virtual_environments.sh [-y|--yes] # -y, --yes Skip the confirmation prompt. Used by automated upgrades # (wrolpi-upgrade.service), which run without a tty -- the # interactive prompt would otherwise loop forever on EOF. ASSUME_YES=false for arg in "$@"; do case "${arg}" in -y | --yes) ASSUME_YES=true ;; esac done # Re-execute this script if it wasn't called with sudo. if [ $EUID != 0 ]; then sudo "$0" "$@" exit $? fi source /opt/wrolpi/wrolpi/scripts/lib.sh if [ "${ASSUME_YES}" != true ]; then yes_or_no "This script requires internet access. Do you want to continue?" || exit 0 fi set -e set -x echo "Stopping WROLPi services..." systemctl stop wrolpi-api.service || : systemctl stop wrolpi-controller.service || : systemctl stop wrolpi-help.service || : # Reset main API venv echo "Resetting /opt/wrolpi/venv..." rm -rf /opt/wrolpi/venv python3 -m venv /opt/wrolpi/venv /opt/wrolpi/venv/bin/pip3 install --upgrade pip /opt/wrolpi/venv/bin/pip3 install -r /opt/wrolpi/requirements.txt # Reset Controller venv echo "Resetting /opt/wrolpi/controller/venv..." rm -rf /opt/wrolpi/controller/venv python3 -m venv /opt/wrolpi/controller/venv /opt/wrolpi/controller/venv/bin/pip install --upgrade pip /opt/wrolpi/controller/venv/bin/pip install -r /opt/wrolpi/controller/requirements.txt # Reset Help venv echo "Resetting /opt/wrolpi-help/venv..." rm -rf /opt/wrolpi-help/venv python3 -m venv /opt/wrolpi-help/venv /opt/wrolpi-help/venv/bin/pip3 install --upgrade pip /opt/wrolpi-help/venv/bin/pip3 install -r /opt/wrolpi-help/requirements.txt # Fix ownership chown -R wrolpi:wrolpi /opt/wrolpi /opt/wrolpi-help echo "Restarting WROLPi services..." systemctl start wrolpi-controller.service || : systemctl start wrolpi-api.service || : systemctl start wrolpi-help.service || : echo "Virtual environments have been reset."