1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-26 23:04:49 +03:00
wezterm/ci/subst-release-info.py

98 lines
2.6 KiB
Python
Raw Normal View History

2019-12-30 08:24:08 +03:00
#!/usr/bin/env python3
import json
import sys
2020-05-04 03:14:46 +03:00
import re
2019-12-30 08:24:08 +03:00
2020-05-04 03:14:46 +03:00
CATEGORIZE = {
r".centos(\d+)(:?\S+)?.rpm$": "centos\\1_rpm",
r".fedora(\d+)(:?\S+)?.rpm$": "fedora\\1_rpm",
r".el(\d+).x86_64.rpm$": "centos\\1_rpm",
r".fc(\d+).x86_64.rpm$": "fedora\\1_rpm",
r".opensuse_leap(.*).rpm$": "opensuse_leap_rpm",
r".opensuse_tumbleweed(.*).rpm$": "opensuse_tumbleweed_rpm",
r"Debian(\d+)(\.\d+)?\.deb$": "debian\\1_deb",
r"Ubuntu(\d+)(\.\d+)?.AppImage$": "ubuntu\\1_AppImage",
r"Ubuntu(\d+)(\.\d+)?.deb$": "ubuntu\\1_deb",
r"Ubuntu(\d+)(\.\d+)?\.arm64\.deb$": "ubuntu\\1_arm64_deb",
r"Debian(\d+)(\.\d+)?\.arm64\.deb$": "debian\\1_arm64_deb",
r"Ubuntu20.04.tar.xz$": "linux_raw_bin",
2020-05-04 03:14:46 +03:00
r"^wezterm-\d+-\d+-[a-f0-9]+.tar.xz$": "linux_raw_bin",
r"src.tar.gz$": "src",
r"^WezTerm-macos-.*.zip$": "macos_zip",
r"^WezTerm-windows-.*.zip$": "windows_zip",
2020-05-25 22:52:06 +03:00
r"^WezTerm-.*.setup.exe$": "windows_exe",
r"alpine(\d+)\.(\d+)(:?-\S+)?.apk": "alpine\\1_\\2_apk",
2020-05-04 03:14:46 +03:00
}
2019-12-30 08:24:08 +03:00
2020-05-04 03:14:46 +03:00
def categorize(rel):
downloads = {}
2020-05-04 03:14:46 +03:00
tag_name = "wezterm-%s" % rel["tag_name"]
2019-12-30 08:24:08 +03:00
for asset in rel["assets"]:
url = asset["browser_download_url"]
name = asset["name"]
2020-05-04 03:14:46 +03:00
for k, v in CATEGORIZE.items():
matches = re.search(k, name)
if matches:
v = matches.expand(v)
2020-05-04 03:14:46 +03:00
downloads[v] = (url, name, tag_name)
return downloads
2019-12-30 08:24:08 +03:00
def pretty(o):
return json.dumps(o, indent=4, sort_keys=True, separators=(",", ":"))
2020-05-04 03:14:46 +03:00
def build_subst(subst, stable, categorized):
2023-03-16 08:56:44 +03:00
for kind, info in categorized.items():
2020-05-04 03:14:46 +03:00
if info is None:
continue
url, name, dir = info
kind = f"{kind}_{stable}"
subst[kind] = url
subst[f"{kind}_asset"] = name
subst[f"{kind}_dir"] = dir
2020-05-04 03:14:46 +03:00
2019-12-30 08:24:08 +03:00
def load_release_info():
with open("/tmp/wezterm.releases.json") as f:
release_info = json.load(f)
with open("/tmp/wezterm.nightly.json") as f:
nightly = json.load(f)
latest = None
2019-12-30 08:24:08 +03:00
for rel in release_info:
if type(rel) is str:
print("Error", pretty(release_info))
raise Exception("Error obtaining release info")
2023-03-16 08:56:44 +03:00
# print(pretty(rel))
if rel["prerelease"]:
continue
latest = rel
break
2019-12-30 08:24:08 +03:00
2020-05-04 03:14:46 +03:00
latest = categorize(latest)
nightly = categorize(nightly)
2019-12-30 08:24:08 +03:00
2023-03-16 08:56:44 +03:00
# print("latest: ", pretty(latest))
# print("nightly: ", pretty(nightly))
2019-12-30 08:24:08 +03:00
subst = {}
2020-05-04 03:14:46 +03:00
build_subst(subst, "stable", latest)
build_subst(subst, "nightly", nightly)
with open(f"docs/releases.json", "w") as output:
json.dump(subst, output)
2019-12-30 08:24:08 +03:00
2019-12-30 08:24:08 +03:00
def main():
load_release_info()
2019-12-30 08:24:08 +03:00
main()