Improve changelog generation script
This commit is contained in:
parent
d3ea922cc6
commit
99c1034cfc
|
|
@ -84,6 +84,7 @@ I usually do this all on the `master` branch, but doing it in a release branch i
|
||||||
(cd crates/egui_demo_lib && cargo publish --quiet) && echo "✅ egui_demo_lib"
|
(cd crates/egui_demo_lib && cargo publish --quiet) && echo "✅ egui_demo_lib"
|
||||||
(cd crates/egui_glow && cargo publish --quiet) && echo "✅ egui_glow"
|
(cd crates/egui_glow && cargo publish --quiet) && echo "✅ egui_glow"
|
||||||
(cd crates/eframe && cargo publish --quiet) && echo "✅ eframe"
|
(cd crates/eframe && cargo publish --quiet) && echo "✅ eframe"
|
||||||
|
(cd crates/egui_kittest && cargo publish --quiet) && echo "✅ egui_kittest"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Announcements
|
## Announcements
|
||||||
|
|
|
||||||
|
|
@ -214,18 +214,42 @@ def add_to_changelog_file(crate: str, content: str, version: str) -> None:
|
||||||
file.write(content)
|
file.write(content)
|
||||||
|
|
||||||
|
|
||||||
|
def calc_commit_range(new_version: str) -> str:
|
||||||
|
parts = new_version.split(".")
|
||||||
|
assert len(parts) == 3, "Expected version to be on the format X.Y.Z"
|
||||||
|
major = int(parts[0])
|
||||||
|
minor = int(parts[1])
|
||||||
|
patch = int(parts[2])
|
||||||
|
|
||||||
|
if 0 < patch:
|
||||||
|
# A patch release.
|
||||||
|
# Include changes since last patch release.
|
||||||
|
# This assumes we've cherry-picked stuff for this release.
|
||||||
|
diff_since_version = f"0.{minor}.{patch - 1}"
|
||||||
|
elif 0 < minor:
|
||||||
|
# A minor release
|
||||||
|
# The diff should span everything since the last minor release.
|
||||||
|
# The script later excludes duplicated automatically, so we don't include stuff that
|
||||||
|
# was part of intervening patch releases.
|
||||||
|
diff_since_version = f"{major}.{minor - 1}.0"
|
||||||
|
else:
|
||||||
|
# A major release
|
||||||
|
# The diff should span everything since the last major release.
|
||||||
|
# The script later excludes duplicated automatically, so we don't include stuff that
|
||||||
|
# was part of intervening minor/patch releases.
|
||||||
|
diff_since_version = f"{major - 1}.{minor}.0"
|
||||||
|
|
||||||
|
return f"{diff_since_version}..HEAD"
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
parser = argparse.ArgumentParser(description="Generate a changelog.")
|
parser = argparse.ArgumentParser(description="Generate a changelog.")
|
||||||
parser.add_argument("--commit-range", help="e.g. 0.24.0..HEAD", required=True)
|
parser.add_argument("--version", help="What release is this?", required=True)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--write", help="Write into the different changelogs?", action="store_true"
|
"--write", help="Write into the different changelogs?", action="store_true"
|
||||||
)
|
)
|
||||||
parser.add_argument("--version", help="What release is this?")
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
commit_range = calc_commit_range(args.version)
|
||||||
if args.write and not args.version:
|
|
||||||
print("ERROR: --version is required when --write is used")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
crate_names = [
|
crate_names = [
|
||||||
"ecolor",
|
"ecolor",
|
||||||
|
|
@ -251,7 +275,7 @@ def main() -> None:
|
||||||
all_changelogs += file.read()
|
all_changelogs += file.read()
|
||||||
|
|
||||||
repo = Repo(".")
|
repo = Repo(".")
|
||||||
commits = list(repo.iter_commits(args.commit_range))
|
commits = list(repo.iter_commits(commit_range))
|
||||||
commits.reverse() # Most recent last
|
commits.reverse() # Most recent last
|
||||||
commit_infos = list(map(get_commit_info, commits))
|
commit_infos = list(map(get_commit_info, commits))
|
||||||
|
|
||||||
|
|
@ -307,7 +331,7 @@ def main() -> None:
|
||||||
unsorted_prs.append(pr_summary(pr_info))
|
unsorted_prs.append(pr_summary(pr_info))
|
||||||
|
|
||||||
print()
|
print()
|
||||||
print(f"Full diff at https://github.com/emilk/egui/compare/{args.commit_range}")
|
print(f"Full diff at https://github.com/emilk/egui/compare/{commit_range}")
|
||||||
print()
|
print()
|
||||||
for crate in crate_names:
|
for crate in crate_names:
|
||||||
if crate in crate_sections:
|
if crate in crate_sections:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue