From 0fdbe550de2b8baf1549bd18c7378a210e017199 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Fri, 3 Oct 2025 05:53:31 +0200 Subject: [PATCH] Add upgrade_dep invocation sub-command for quick fixes re yt-dlp or google-api-python-client. --- src/run.py | 10 +++++++++- src/upgrade_dep.sh | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100755 src/upgrade_dep.sh diff --git a/src/run.py b/src/run.py index adc4179..2a01f53 100755 --- a/src/run.py +++ b/src/run.py @@ -2,6 +2,7 @@ """Match command line calls to appropriate scripts.""" # standard libs +from subprocess import CalledProcessError, run as subprocess_run from sys import argv, exit as sys_exit # non-standard libs from plomlib.setup import dependency_hint @@ -39,7 +40,14 @@ if __name__ == '__main__': case _: raise HandledException('Unknown argument.') case _: - raise HandledException('Bad number of command arguments.') + if argv[1] == 'upgrade_dep': + _PATH_UPGRADER = './upgrade_dep.sh' + try: + subprocess_run([_PATH_UPGRADER] + argv[2:], check=True) + except CalledProcessError as e: + sys_exit(e.returncode) + else: + raise HandledException('Bad number of command arguments.') except HandledException as e: print(e) sys_exit(1) diff --git a/src/upgrade_dep.sh b/src/upgrade_dep.sh new file mode 100755 index 0000000..22a71e3 --- /dev/null +++ b/src/upgrade_dep.sh @@ -0,0 +1,37 @@ +#!/usr/bin/sh +set -e + +MODULE="$1" +if [ -z "${MODULE}" ] || [ -n "$2" ]; then + echo 'Need to pass exactly one module name!' + exit 1 +fi + +MSG_INTRO='^Would install '"${MODULE}-" +NEW_VERSION=$(pip3 install --dry-run --upgrade "${MODULE}" | grep "${MSG_INTRO}"'[0-9.]*$' | sed 's/'"${MSG_INTRO}"'//') +if [ -z "${NEW_VERSION}" ]; then + echo 'Nothing to update.' + exit 0 +fi + +PATH_REQS="$(pwd)/requirements.txt" +TOK_EQ='==' +OLD_REQ=$(grep "^${MODULE}${TOK_EQ}" "${PATH_REQS}") +NEW_REQ="${MODULE}${TOK_EQ}${NEW_VERSION}" + +if [ "${OLD_REQ}" = "${NEW_REQ}" ]; then + echo "Entry in ${PATH_REQS} already is '${NEW_REQ}'." +else + echo "In ${PATH_REQS} replacing '${OLD_REQ}' with '${NEW_REQ}'." + PATH_TMP_REQS=$(mktemp) + while read -r LINE; do + if [ "${LINE}" = "${OLD_REQ}" ]; then + echo "${NEW_REQ}" >> "${PATH_TMP_REQS}" + else + echo "${LINE}" >> "${PATH_TMP_REQS}" + fi + done < "${PATH_REQS}" + mv "${PATH_TMP_REQS}" "${PATH_REQS}" +fi + +echo "Run install_deps to apply, and let upstream know." -- 2.30.2