2026-02-28 16:11:12 -07:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
# Deletes and recreates all WROLPi Python virtual environments.
|
|
|
|
|
# This script requires internet access for pip install.
|
2026-07-20 08:55:41 -06:00
|
|
|
#
|
|
|
|
|
# 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
|
2026-02-28 16:11:12 -07:00
|
|
|
|
|
|
|
|
# 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
|
|
|
|
|
|
2026-07-20 08:55:41 -06:00
|
|
|
if [ "${ASSUME_YES}" != true ]; then
|
|
|
|
|
yes_or_no "This script requires internet access. Do you want to continue?" || exit 0
|
|
|
|
|
fi
|
2026-02-28 16:11:12 -07:00
|
|
|
|
|
|
|
|
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."
|