From 9eda3b81bed65c0e4277c1276dbd7df14012a051 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Tue, 9 Apr 2024 13:01:43 +0200 Subject: [PATCH] Safer way to detect python package version --- modoboa_installer/python.py | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/modoboa_installer/python.py b/modoboa_installer/python.py index 948c62f..54e1e90 100644 --- a/modoboa_installer/python.py +++ b/modoboa_installer/python.py @@ -58,18 +58,25 @@ def get_package_version(name, venv=None, **kwargs): f"Output is: {output}") sys.exit(1) - output_list = output.decode().split("\n") - version_item_list = output_list[1].split(":") - version_list = version_item_list[1].split(".") version_list_clean = [] - for element in version_list: - try: - version_list_clean.append(int(element)) - except ValueError: - utils.printcolor( - f"Failed to decode some part of the version of {name}", - utils.YELLOW) - version_list_clean.append(element) + for line in output.decode().split("\n"): + if not line.startswith("Version:"): + continue + version_item_list = line.split(":") + version_list = version_item_list[1].split(".") + for element in version_list: + try: + version_list_clean.append(int(element)) + except ValueError: + utils.printcolor( + f"Failed to decode some part of the version of {name}", + utils.YELLOW) + version_list_clean.append(element) + if len(version_list_clean) == 0: + utils.printcolor( + f"Failed to find the version of {name}", + utils.RED) + sys.exit(1) return version_list_clean