From 2baf07a8ee8fc03ea85a85300c9f80a2b4984b2f Mon Sep 17 00:00:00 2001 From: ay-ex <127405908+ay-ex@users.noreply.github.com> Date: Wed, 19 Jul 2023 07:26:59 +0000 Subject: [PATCH] fix choco_regex fixes new regex needed for upstream blender cmake adjustment, pulls all regex and url into contant variables, improves error message, when a version cannot be retrieved --- choco/blenderbim/check_repo_infos.py | 89 +++++++++++++++------------- 1 file changed, 49 insertions(+), 40 deletions(-) diff --git a/choco/blenderbim/check_repo_infos.py b/choco/blenderbim/check_repo_infos.py index af99f3cdea..877a531674 100644 --- a/choco/blenderbim/check_repo_infos.py +++ b/choco/blenderbim/check_repo_infos.py @@ -13,68 +13,77 @@ def request_repo_info(url: str): return resp +def get_choco_package_info() -> str: + resp = request_repo_info(URL_CHOCO_PACKAGE) + html_txt = str(resp.read()) + return html_txt + + +def get_latest_blender_version() -> list: + html_txt = get_choco_package_info() + return re.findall(RE_BLENDER_VERSION_MIN_MAJ_PAT, html_txt) + + if sys.argv[1] == "--do_choco_release?": now = datetime.datetime.now() blenderbim_date = (now - datetime.timedelta(days=1)).strftime("%y%m%d") - url = "https://github.com/IfcOpenShell/IfcOpenShell/releases" - resp = request_repo_info(url) + resp = request_repo_info(URL_IFCOS_RELEASES) text = str(resp.read()) if blenderbim_date in text: print("do_choco_release", end="") elif sys.argv[1] == "--latest_blender_release_maj_min_pat?": - re_blender_version_min_maj_pat = r"Latest Version.+Blender (\d+\.\d+\.\d+)" - url = "https://community.chocolatey.org/packages/blender" - resp = request_repo_info(url) - html_txt = str(resp.read()) - found = re.findall(re_blender_version_min_maj_pat, html_txt) - if found: - print(found[0], end="") + latest_blender_version = get_latest_blender_version() + if latest_blender_version: + print(latest_blender_version[0], end="") + else: + print("[ERROR] could not contact determine blender_version_min_maj_pat") + quit(1) elif sys.argv[1] == "--latest_blender_release_maj_min?": - re_blender_version_min_maj = r"Latest Version.+Blender (\d+\.\d+)\..+" - url = "https://community.chocolatey.org/packages/blender" - resp = request_repo_info(url) - html_txt = str(resp.read()) - found = re.findall(re_blender_version_min_maj, html_txt) - if found: - print(found[0], end="") + html_txt = get_choco_package_info() + blender_version_min_maj = re.findall(RE_BLENDER_VERSION_MIN_MAJ, html_txt) + if blender_version_min_maj: + print(blender_version_min_maj[0], end="") + else: + print("[ERROR] could not contact determine blender_version_min_maj") + quit(1) elif sys.argv[1] == "--latest_blender_python_version_maj_min?": - # get latest blender version first - re_blender_version_min_maj_pat = r"Latest Version.+Blender (\d+\.\d+\.\d+)" - url = "https://community.chocolatey.org/packages/blender" - resp = request_repo_info(url) - html_txt = str(resp.read()) - found = re.findall(re_blender_version_min_maj_pat, html_txt) - if found: - latest_blender_version_tag = f"v{found[0]}" - re_blender_python_version_maj_min = r"SET\(PYTHON_VERSION (\d+.\d+) " - url = f"https://raw.githubusercontent.com/blender/blender/{latest_blender_version_tag}/build_files/cmake/Modules/FindPythonLibsUnix.cmake" - resp = request_repo_info(url) + latest_blender_version = get_latest_blender_version() + if latest_blender_version: + latest_blender_version_tag = f"v{latest_blender_version[0]}" + resp = request_repo_info(URL_BLENDER_CMAKE) html_txt = str(resp.read()) - found = re.findall(re_blender_python_version_maj_min, html_txt) + found = re.findall(RE_BLENDER_PYTHON_VERSION_MAJ_MIN, html_txt) if found: print(found[0], end="") + else: + print("[ERROR] could not contact determine blender_python_version_maj_min") + quit(1) elif sys.argv[1] == "--pyver?": - # get latest blender version first - re_blender_version_min_maj_pat = r"Latest Version.+Blender (\d+\.\d+\.\d+)" - url = "https://community.chocolatey.org/packages/blender" - resp = request_repo_info(url) - html_txt = str(resp.read()) - found = re.findall(re_blender_version_min_maj_pat, html_txt) - if found: - latest_blender_version_tag = f"v{found[0]}" - re_blender_python_version_maj_min = r"^SET\(_PYTHON_VERSION_SUPPORTED (\d+\.\d+)\)$" - url = f"https://raw.githubusercontent.com/blender/blender/{latest_blender_version_tag}/build_files/cmake/Modules/FindPythonLibsUnix.cmake" - resp = request_repo_info(url) + latest_blender_version = get_latest_blender_version() + if latest_blender_version: + latest_blender_version_tag = f"v{latest_blender_version[0]}" + resp = request_repo_info(URL_BLENDER_CMAKE) html_txt = str(resp.read()) - found = re.findall(re_blender_python_version_maj_min, html_txt) + found = re.findall(RE_BLENDER_PYTHON_VERSION_MAJ_MIN, html_txt) if found: print(f"py{found[0].replace('.', '')}", end="") + else: + print("[ERROR] could not contact determine pyver") + quit(1) + + +URL_IFCOS_RELEASES = "https://github.com/IfcOpenShell/IfcOpenShell/releases" +URL_CHOCO_PACKAGE = "https://community.chocolatey.org/packages/blender" +URL_BLENDER_CMAKE = f"https://raw.githubusercontent.com/blender/blender/{latest_blender_version_tag}/build_files/cmake/Modules/FindPythonLibsUnix.cmake" +RE_BLENDER_VERSION_MIN_MAJ = r"Latest Version.+Blender (\d+\.\d+)\..+" +RE_BLENDER_VERSION_MIN_MAJ_PAT = r"Latest Version.+Blender (\d+\.\d+\.\d+)" +RE_BLENDER_PYTHON_VERSION_MAJ_MIN = r"SET\(_PYTHON_VERSION_SUPPORTED (\d+\.\d+)\)"