Files

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

90 lines
3.1 KiB
Python
Raw Permalink Normal View History

import datetime
2022-08-10 13:22:26 +02:00
import re
import sys
from urllib import request
def request_repo_info(url: str):
req = request.Request(url)
resp = request.urlopen(req)
if not resp.status == 200:
print(f"[ERROR] could not contact server: {url}")
quit(1)
return resp
2023-07-19 07:26:59 +00:00
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)
2023-07-25 12:35:25 +00:00
URL_IFCOS_RELEASES = "https://github.com/IfcOpenShell/IfcOpenShell/releases"
URL_CHOCO_PACKAGE = "https://community.chocolatey.org/packages/blender"
URL_BLENDER_CMAKE = "https://raw.githubusercontent.com/blender/blender/{}/build_files/cmake/Modules/FindPythonLibsUnix.cmake"
RE_BLENDER_VERSION_MIN_MAJ = r"Latest Version.+<span>Blender (\d+\.\d+)\..+</span>"
RE_BLENDER_VERSION_MIN_MAJ_PAT = r"Latest Version.+<span>Blender (\d+\.\d+\.\d+)</span>"
2023-12-20 11:00:24 +05:00
RE_BLENDER_PYTHON_VERSION_MAJ_MIN = r"(?:set|SET)\(_PYTHON_VERSION_SUPPORTED (\d+\.\d+)\)"
2023-07-25 12:35:25 +00:00
if sys.argv[1] == "--do_choco_release?":
now = datetime.datetime.now()
2022-10-12 08:39:50 +02:00
blenderbim_date = (now - datetime.timedelta(days=1)).strftime("%y%m%d")
2023-07-19 07:26:59 +00:00
resp = request_repo_info(URL_IFCOS_RELEASES)
2022-10-12 08:39:50 +02:00
text = str(resp.read())
if blenderbim_date in text:
print("do_choco_release", end="")
2022-08-10 13:22:26 +02:00
elif sys.argv[1] == "--latest_blender_release_maj_min_pat?":
2023-07-19 07:26:59 +00:00
latest_blender_version = get_latest_blender_version()
if latest_blender_version:
print(latest_blender_version[0], end="")
else:
2023-07-19 07:29:37 +00:00
print("[ERROR] could not determine blender_version_min_maj_pat")
2023-07-19 07:26:59 +00:00
quit(1)
2022-08-10 13:22:26 +02:00
elif sys.argv[1] == "--latest_blender_release_maj_min?":
2023-07-19 07:26:59 +00:00
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:
2023-07-19 07:29:37 +00:00
print("[ERROR] could not determine blender_version_min_maj")
2023-07-19 07:26:59 +00:00
quit(1)
2022-08-10 13:22:26 +02:00
elif sys.argv[1] == "--latest_blender_python_version_maj_min?":
2023-07-19 07:26:59 +00:00
latest_blender_version = get_latest_blender_version()
if latest_blender_version:
latest_blender_version_tag = f"v{latest_blender_version[0]}"
2023-07-25 12:35:25 +00:00
resp = request_repo_info(URL_BLENDER_CMAKE.format(latest_blender_version_tag))
html_txt = str(resp.read())
2023-07-19 07:26:59 +00:00
found = re.findall(RE_BLENDER_PYTHON_VERSION_MAJ_MIN, html_txt)
if found:
print(found[0], end="")
2023-07-19 07:26:59 +00:00
else:
2023-07-19 07:29:37 +00:00
print("[ERROR] could not determine blender_python_version_maj_min")
2023-07-19 07:26:59 +00:00
quit(1)
elif sys.argv[1] == "--pyver?":
2023-07-19 07:26:59 +00:00
latest_blender_version = get_latest_blender_version()
if latest_blender_version:
latest_blender_version_tag = f"v{latest_blender_version[0]}"
2023-07-31 12:50:26 +00:00
resp = request_repo_info(URL_BLENDER_CMAKE.format(latest_blender_version_tag))
html_txt = str(resp.read())
2023-07-19 07:26:59 +00:00
found = re.findall(RE_BLENDER_PYTHON_VERSION_MAJ_MIN, html_txt)
if found:
print(f"py{found[0].replace('.', '')}", end="")
2023-07-19 07:26:59 +00:00
else:
2023-07-19 07:29:37 +00:00
print("[ERROR] could not determine pyver")
2023-07-19 07:26:59 +00:00
quit(1)