Skip to content

Commit 89ae765

Browse files
authored
Improvements to the changelog. 1) Adding the integration domain and 2) Introduce the issue_origin support. By default this will be github for new entries, but for compat reasons, when we generate the markdown for entries, if the issue_origin isn't present then we'll default to gitlab. (baserow#4255)
1 parent 6d27a73 commit 89ae765

File tree

5 files changed

+45
-16
lines changed

5 files changed

+45
-16
lines changed

changelog/src/changelog.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,11 @@ def add(working_dir: Optional[str] = typer.Option(default=default_path)):
4343
issue_number = None
4444

4545
ChangelogHandler(working_dir).add_entry(
46-
domain_type, changelog_type, message, issue_number=issue_number
46+
domain_type,
47+
changelog_type,
48+
message,
49+
issue_number=issue_number,
50+
issue_origin="github", # All new changelogs originate from GitHub
4751
)
4852

4953

changelog/src/changelog_entry.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from typing import Dict, List, Optional, Union
55

66
GITLAB_URL = os.environ.get("GITLAB_URL", "https://gitlab.com/baserow/baserow")
7+
GITHUB_URL = os.environ.get("GITHUB_URL", "https://github.com/baserow/baserow")
78

89

910
class ChangelogEntry(abc.ABC):
@@ -17,6 +18,7 @@ def generate_entry_dict(
1718
self,
1819
domain_type_name: str,
1920
message: str,
21+
issue_origin: str,
2022
issue_number: Optional[int] = None,
2123
bullet_points: List[str] = None,
2224
) -> Dict[str, any]:
@@ -26,18 +28,24 @@ def generate_entry_dict(
2628
return {
2729
"type": self.type,
2830
"message": message,
29-
"domain": domain_type_name,
31+
"issue_origin": issue_origin,
3032
"issue_number": issue_number,
33+
"domain": domain_type_name,
3134
"bullet_points": bullet_points,
3235
"created_at": datetime.now(tz=timezone.utc).strftime("%Y-%m-%d"),
3336
}
3437

3538
@staticmethod
36-
def get_markdown_string(message: str, issue_number: Union[int, None] = None) -> str:
39+
def get_markdown_string(
40+
message: str,
41+
issue_number: Union[int, None] = None,
42+
issue_origin: Optional[str] = "gitlab",
43+
) -> str:
3744
string = f"* {message}"
3845

3946
if issue_number is not None:
40-
string += f" [#{issue_number}]({GITLAB_URL}/-/issues/{issue_number})"
47+
url_prefix = GITLAB_URL if issue_origin == "gitlab" else GITHUB_URL
48+
string += f" [#{issue_number}]({url_prefix}/-/issues/{issue_number})"
4149

4250
return string
4351

changelog/src/domains.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,16 @@ class AutomationDomain(BaserowDomain):
3535
heading = "Automation"
3636

3737

38+
class IntegrationDomain(BaserowDomain):
39+
type = "integration"
40+
heading = "Integration"
41+
42+
3843
domain_types: Dict[str, type[BaserowDomain]] = {
3944
CoreDomain.type: CoreDomain,
4045
DashboardDomain.type: DashboardDomain,
4146
DatabaseDomain.type: DatabaseDomain,
4247
BuilderDomain.type: BuilderDomain,
4348
AutomationDomain.type: AutomationDomain,
49+
IntegrationDomain.type: IntegrationDomain,
4450
}

changelog/src/handler.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def add_entry(
4040
changelog_entry_type_name: str,
4141
message: str,
4242
issue_number: Optional[int] = None,
43+
issue_origin: Optional[str] = "github",
4344
release: str = UNRELEASED_FOLDER_NAME,
4445
bullet_points: List[str] = None,
4546
) -> str:
@@ -57,7 +58,11 @@ def add_entry(
5758

5859
with open(full_path, "w+") as entry_file:
5960
entry = changelog_entry_type().generate_entry_dict(
60-
domain_type_name, message, issue_number, bullet_points=bullet_points
61+
domain_type_name,
62+
message,
63+
issue_origin,
64+
issue_number,
65+
bullet_points=bullet_points,
6166
)
6267
json.dump(entry, entry_file, indent=4)
6368

@@ -161,8 +166,13 @@ def generate_changelog_markdown_file(self):
161166
)
162167
entry_message = f"{domain_prefix}{entry['message']}"
163168

169+
# Note: if no `issue_origin` is found, we default to "gitlab"
170+
# for compatibility with older entries. All new entries will
171+
# point to "github" as their origin.
164172
entry_markdown_string = entry_type.get_markdown_string(
165-
entry_message, entry["issue_number"]
173+
entry_message,
174+
entry["issue_number"],
175+
entry.get("issue_origin", "gitlab"),
166176
)
167177

168178
changelog_file.write(
@@ -193,7 +203,8 @@ def move_entries_to_release_folder(
193203
# Delete all .gitignore files in the subfolders of release folder because
194204
# there is not reason to have empty folders there.
195205
for gitignore_file in glob.glob(
196-
f"{release_path}/**/.gitkeep", recursive=True):
206+
f"{release_path}/**/.gitkeep", recursive=True
207+
):
197208
os.remove(gitignore_file)
198209

199210
# Delete all empty subfolders in the release folder because we don't need
@@ -213,7 +224,7 @@ def move_entries_to_release_folder(
213224
except FileExistsError:
214225
print(f'Release with name "{release_name}" already exists.')
215226
except OSError as e:
216-
print(f'OS error occurred: {e}')
227+
print(f"OS error occurred: {e}")
217228
return None
218229

219230
@staticmethod

changelog/tests/changelog/test_changelog_handler.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,29 +18,29 @@ def test_add_entry(fs):
1818

1919
def test_get_changelog_entries(fs):
2020
handler = ChangelogHandler()
21-
handler.add_entry(DatabaseDomain.type, BugChangelogEntry.type, "1")
22-
handler.add_entry(DatabaseDomain.type, BugChangelogEntry.type, "2")
21+
handler.add_entry(DatabaseDomain.type, BugChangelogEntry.type, "msg1")
22+
handler.add_entry(DatabaseDomain.type, BugChangelogEntry.type, "msg2")
2323

2424
changelog_entries = handler.get_changelog_entries()
2525

2626
assert BugChangelogEntry.type in changelog_entries
2727
assert [
28-
BugChangelogEntry().generate_entry_dict(DatabaseDomain.type, "1"),
29-
BugChangelogEntry().generate_entry_dict(DatabaseDomain.type, "2"),
28+
BugChangelogEntry().generate_entry_dict(DatabaseDomain.type, "msg1", "github"),
29+
BugChangelogEntry().generate_entry_dict(DatabaseDomain.type, "msg2", "github"),
3030
] in changelog_entries.values()
3131

3232

3333
def test_get_changelog_entries_order(fs):
3434
handler = ChangelogHandler()
35-
handler.add_entry(DatabaseDomain.type, BugChangelogEntry.type, "2")
36-
handler.add_entry(DatabaseDomain.type, BugChangelogEntry.type, "1")
35+
handler.add_entry(DatabaseDomain.type, BugChangelogEntry.type, "msg2")
36+
handler.add_entry(DatabaseDomain.type, BugChangelogEntry.type, "msg1")
3737

3838
changelog_entries = handler.get_changelog_entries()
3939

4040
assert BugChangelogEntry.type in changelog_entries
4141
assert [
42-
BugChangelogEntry().generate_entry_dict(DatabaseDomain.type, "1"),
43-
BugChangelogEntry().generate_entry_dict(DatabaseDomain.type, "2"),
42+
BugChangelogEntry().generate_entry_dict(DatabaseDomain.type, "msg1", "github"),
43+
BugChangelogEntry().generate_entry_dict(DatabaseDomain.type, "msg2", "github"),
4444
] in changelog_entries.values()
4545

4646

0 commit comments

Comments
 (0)