Skip to content

Commit 63634b7

Browse files
committed
Update cmd/update-release/update-release.py script to bundle v2 prereleases, and bundle 2.0.0-rc.16
1 parent d43905b commit 63634b7

File tree

3 files changed

+64
-5
lines changed

3 files changed

+64
-5
lines changed

cmd/update-release/update-release.py

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,74 @@
3131
if 'tag_name' not in data:
3232
raise ValueError("tag_name not present in latest_url")
3333

34+
import urllib.request
35+
import json
36+
import semver
37+
38+
def get_latest_v2_prerelease_tag_name(repo_owner, repo_name):
39+
"""
40+
Fetches the latest v2 prerelease tag_name from a GitHub repository's releases.
41+
42+
Args:
43+
repo_owner (str): The owner of the GitHub repository (e.g., 'syncthing').
44+
repo_name (str): The name of the GitHub repository (e.g., 'syncthing').
45+
46+
Returns:
47+
str or None: The tag_name of the latest v2 prerelease, or None if not found.
48+
"""
49+
url = f"https://api.github.com/repos/{repo_owner}/{repo_name}/releases"
50+
try:
51+
with urllib.request.urlopen(url) as response:
52+
if response.getcode() == 200:
53+
data = json.loads(response.read().decode('utf-8'))
54+
else:
55+
print(f"Error fetching data: HTTP {response.getcode()}")
56+
return None
57+
except urllib.error.URLError as e:
58+
print(f"Error connecting to GitHub API: {e.reason}")
59+
return None
60+
except json.JSONDecodeError:
61+
print("Error decoding JSON response.")
62+
return None
63+
64+
v2_prereleases = []
65+
for release in data:
66+
tag_name = release.get('tag_name')
67+
prerelease = release.get('prerelease')
68+
69+
if tag_name and prerelease:
70+
try:
71+
version = semver.Version.parse(tag_name.lstrip('v')) # Remove 'v' prefix if present
72+
if version.major == 2 and version.prerelease:
73+
v2_prereleases.append(version)
74+
except ValueError:
75+
# Not a valid semver string, skip
76+
continue
77+
78+
if not v2_prereleases:
79+
return None
80+
81+
# Sort the prereleases to find the latest
82+
latest_v2_prerelease = max(v2_prereleases)
83+
return f"v{latest_v2_prerelease}" # Re-add the 'v' prefix for consistency
84+
3485
###
3586
# Parse the tag version and generate CFBundleShortVersionString and CFBundleVersion
3687
###
88+
owner = "syncthing"
89+
repo = "syncthing"
90+
latest_tag = get_latest_v2_prerelease_tag_name(owner, repo)
91+
92+
if latest_tag:
93+
print(f"The latest v2 prerelease tag_name for {owner}/{repo} is: {latest_tag}")
94+
else:
95+
print(f"No v2 prerelease found for {owner}/{repo}.")
3796

3897
# Ugly hack because of https://github.com/python-semver/python-semver/issues/137
39-
tag_name = data['tag_name'].replace('v', '')
98+
tag_name = latest_tag.replace('v', '')
4099
version = semver.VersionInfo.parse(tag_name)
41100

42-
CFBundleShortVersionString = "{}-{:d}".format(
101+
CFBundleShortVersionString = "{}+{:d}".format(
43102
str(version),
44103
distVersion)
45104
CFBundleVersion = "{:d}{:03d}{:03d}{:02d}".format(

syncthing/Info.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
<key>CFBundlePackageType</key>
2020
<string>APPL</string>
2121
<key>CFBundleShortVersionString</key>
22-
<string>1.29.6-1</string>
22+
<string>2.0.0-rc.16+1</string>
2323
<key>CFBundleVersion</key>
24-
<string>102900601</string>
24+
<string>200000001</string>
2525
<key>LSApplicationCategoryType</key>
2626
<string>public.app-category.utilities</string>
2727
<key>LSMinimumSystemVersion</key>

syncthing/Scripts/syncthing-resource.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
set -euo pipefail
33

44
# Download and unpack syncthing into ${PRODUCT_NAME}.app/Contents/Resources
5-
SYNCTHING_VERSION="1.29.6"
5+
SYNCTHING_VERSION="2.0.0-rc.16"
66
SYNCTHING_DIST_URL="https://github.com/syncthing/syncthing/releases/download"
77
SYNCTHING_TARBALL_URL="${SYNCTHING_DIST_URL}/v${SYNCTHING_VERSION}/syncthing-macos-universal-v${SYNCTHING_VERSION}.zip"
88

0 commit comments

Comments
 (0)