Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/workflows/regenerate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,43 @@ jobs:
| jq -r '.packages[] | select(.name=="hotdata") | .version')
echo "version=$version" >> "$GITHUB_OUTPUT"

# check-release.yml gates merges on a `## [x.y.z]` CHANGELOG section
# matching the bumped version, so without a seeded entry every regen PR
# fails that check. Insert a stub (the spec-change title under ### Changed)
# just above the most recent released section; the PR author refines the
# wording before merge. Idempotent: skips if a section for this version
# already exists.
- name: Seed changelog entry
env:
VERSION: ${{ steps.pkg.outputs.version }}
TITLE: ${{ inputs.title }}
run: |
export CHANGELOG_DATE=$(date -u +%Y-%m-%d)
python3 - <<'PY'
import os, pathlib, re
version = os.environ["VERSION"]
date = os.environ["CHANGELOG_DATE"]
title = (os.environ.get("TITLE") or "").strip() \
or "Regenerate the client from the updated Hotdata OpenAPI spec"
path = pathlib.Path("CHANGELOG.md")
text = path.read_text()
if re.search(rf"^## \[{re.escape(version)}\]", text, re.M):
print(f"CHANGELOG already has a [{version}] section; leaving it untouched.")
raise SystemExit(0)
unreleased = re.search(r"^## \[Unreleased\]", text, re.M)
if not unreleased:
raise SystemExit("CHANGELOG.md has no '## [Unreleased]' section to anchor the new entry")
# Insert before the first released section after [Unreleased] (falling
# back to end of file) so any pending entries under [Unreleased] stay
# attributed to it rather than being absorbed by the new version.
nxt = re.search(r"^## \[", text[unreleased.end():], re.M)
insert_at = unreleased.end() + nxt.start() if nxt else len(text)
entry = f"## [{version}] - {date}\n\n### Changed\n\n- {title}\n\n"
text = text[:insert_at] + entry + text[insert_at:]
path.write_text(text)
print(f"Inserted CHANGELOG [{version}] section.")
PY

- name: Generate client
env:
PACKAGE_VERSION: ${{ steps.pkg.outputs.version }}
Expand Down
Loading