|
43 | 43 |
|
44 | 44 | from commitizen import out |
45 | 45 | from commitizen.bump import normalize_tag |
| 46 | +from commitizen.cz.base import ChangelogReleaseHook |
46 | 47 | from commitizen.exceptions import InvalidConfigurationError, NoCommitsFoundError |
47 | 48 | from commitizen.git import GitCommit, GitTag |
48 | 49 | from commitizen.version_schemes import ( |
@@ -113,6 +114,7 @@ def generate_tree_from_commits( |
113 | 114 | unreleased_version: str | None = None, |
114 | 115 | change_type_map: dict[str, str] | None = None, |
115 | 116 | changelog_message_builder_hook: MessageBuilderHook | None = None, |
| 117 | + changelog_release_hook: ChangelogReleaseHook | None = None, |
116 | 118 | merge_prerelease: bool = False, |
117 | 119 | scheme: VersionScheme = DEFAULT_SCHEME, |
118 | 120 | ) -> Iterable[dict]: |
@@ -143,11 +145,14 @@ def generate_tree_from_commits( |
143 | 145 | commit_tag, used_tags, merge_prerelease, scheme=scheme |
144 | 146 | ): |
145 | 147 | used_tags.append(commit_tag) |
146 | | - yield { |
| 148 | + release = { |
147 | 149 | "version": current_tag_name, |
148 | 150 | "date": current_tag_date, |
149 | 151 | "changes": changes, |
150 | 152 | } |
| 153 | + if changelog_release_hook: |
| 154 | + release = changelog_release_hook(release, commit_tag) |
| 155 | + yield release |
151 | 156 | current_tag_name = commit_tag.name |
152 | 157 | current_tag_date = commit_tag.date |
153 | 158 | changes = defaultdict(list) |
@@ -178,7 +183,14 @@ def generate_tree_from_commits( |
178 | 183 | change_type_map, |
179 | 184 | ) |
180 | 185 |
|
181 | | - yield {"version": current_tag_name, "date": current_tag_date, "changes": changes} |
| 186 | + release = { |
| 187 | + "version": current_tag_name, |
| 188 | + "date": current_tag_date, |
| 189 | + "changes": changes, |
| 190 | + } |
| 191 | + if changelog_release_hook: |
| 192 | + release = changelog_release_hook(release, commit_tag) |
| 193 | + yield release |
182 | 194 |
|
183 | 195 |
|
184 | 196 | def process_commit_message( |
|
0 commit comments