Skip to content

Commit b217220

Browse files
committed
Automatically update 'conf/config.yaml' after chagelog generation
1 parent e808727 commit b217220

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

.github/workflows/generate_changelog.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,6 @@ jobs:
3838
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
3939
git add "src/changelogs/sage-${RELEASE_TAG}.txt"
4040
git add conf/contributors.xml
41+
git add conf/config.yaml
4142
git commit -m "Added changelog for release ${{ inputs.release_tag }}"
4243
git push

scripts/create_changelog.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,41 @@ def save_to_file(filename, ver, date_of_release):
407407

408408
print(f"Saved changelog to {filename}")
409409

410+
def get_latest_stable_release():
411+
"""Fetch the latest stable release tag from the API.
412+
413+
Returns:
414+
str | None: The latest release tag if successful, None if the request fails
415+
"""
416+
url = f"{BASE_URL}/releases/latest"
417+
try:
418+
res = requests.get(url, headers=HEADERS)
419+
res.raise_for_status()
420+
res = res.json()
421+
tag = res['tag_name']
422+
date = get_release_date(res)
423+
return {"tag":tag,"date":date}
424+
except Exception as e:
425+
print(f"Failed to fetch latest stable release",e)
426+
return None
427+
428+
def update_config(ver: str, release_date: str, config_file_path: str):
429+
"""Update version and release date in the config file.
430+
431+
Args:
432+
ver (str): New version to set
433+
release_date (str): Release date to set
434+
config_file_path (str): Path to the config file
435+
"""
436+
with open(config_file_path, 'r') as file:
437+
content = file.read()
438+
439+
content = re.sub(r'releasedate:\s*".*?"', f'releasedate: "{release_date}"', content)
440+
content = re.sub(r'version:\s*".*?"', f'version: "{ver}"', content)
441+
content = re.sub(r'version_src:\s*".*?"',f'version_src: "{ver}"',content)
442+
443+
with open(config_file_path, 'w') as file:
444+
file.write(content)
410445

411446
if __name__ == '__main__':
412447
parser = argparse.ArgumentParser(description="Fetch release data from GitHub and extract PR info")
@@ -450,6 +485,9 @@ def save_to_file(filename, ver, date_of_release):
450485
all_contribs = sorted(all_contribs, key=lambda x: (x[0].startswith('@'), x[0]))
451486
if all_info:
452487
save_to_file(filepath, ver, date_of_release)
488+
latest_release = get_latest_stable_release()
489+
if latest_release:
490+
update_config(latest_release['tag'],latest_release['date'],'conf/config.yaml')
453491
else:
454492
print("No information found.")
455493
exit(1)

0 commit comments

Comments
 (0)