#!/bin/bash # pipx venvs are tied to the Python they were built with, so a Python upgrade # breaks them in a way `pipx upgrade-all` can't repair. Rebuild them when the # Python version changes, or when an upgrade fails. STAMP="$HOME/.local/state/coredesktop/pipx-python-version" CURRENT_PYTHON="$(python3 -c 'import sys; print("%d.%d" % sys.version_info[:2])')" if [ "$(cat "$STAMP" 2>/dev/null)" != "$CURRENT_PYTHON" ]; then echo "Python changed to $CURRENT_PYTHON, reinstalling pipx applications..." pipx reinstall-all else echo "Updating pipx applications..." if ! pipx upgrade-all; then echo "pipx upgrade-all failed, reinstalling pipx applications..." pipx reinstall-all fi fi && mkdir -p "$(dirname "$STAMP")" && echo "$CURRENT_PYTHON" > "$STAMP"