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+)\)"