Skip to content

Commit bebf258

Browse files
committed
entry point
1 parent 721e132 commit bebf258

File tree

3 files changed

+49
-18
lines changed

3 files changed

+49
-18
lines changed

gitlabrng/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from . import generate
2+
from .generate import generate_release_notes

gitlabrng/generate.py

Lines changed: 44 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,31 +27,60 @@ def generate_release_notes(project_id, **config):
2727
user_agent: str = 'python-gitlab/3.1.0',
2828
retry_transient_errors: bool = False,
2929
"""
30+
endstr = ' <br>'
31+
3032
gl = gitlab.Gitlab(**config)
3133
project = gl.projects.get(project_id)
3234

3335
if not project.mergerequests.list(state='merged'):
3436
raise ValueError(f"There is not merged merge request for project {project_id} {project.name}")
3537

36-
last_mr_date = datetime.fromisoformat(project.mergerequests.list(state='merged', order_by='updated_at', per_page=1)[0].merged_at)
3738
if not project.releases.list():
38-
last_release_date = datetime(1900, 1, 1)
39-
log = f"Changelog of {project.name}:\n"
39+
log = f"Changelog of {project.name}:{endstr}"
4040
else:
41-
last_release = project.releases.list()[0]
42-
last_release_date = datetime.fromisoformat(last_release.created_at)
43-
if last_mr_date < last_release_date:
44-
raise ValueError(f"There is no merged merge request after the last release {last_release.name}")
45-
log = f"Changelog since release {last_release.name} of {project.name}:\n"
41+
last_release = project.releases.list()[0]
42+
log = f"Changelog since release {last_release.name} of {project.name}:{endstr}"
4643

4744
print(log)
4845
page = 0
49-
while last_mr_date > last_release_date:
50-
for imr, mr in enumerate(project.mergerequests.list(state='merged', order_by='updated_at', page=page)):
51-
last_mr_date = datetime.fromisoformat(mr.merged_at)
52-
if last_mr_date < last_release_date:
53-
continue
54-
line = f" * {mr.title} (@{mr.author['username']})"
46+
list_mrs = project.mergerequests.list(state='merged',
47+
order_by='updated_at',
48+
updated_after=last_release.released_at,
49+
page=page)
50+
if not list_mrs:
51+
raise ValueError(f"There is no merged merge request after the last release {last_release.name}")
52+
53+
while list_mrs:
54+
for mr in list_mrs:
55+
line = f" * {mr.title} (@{mr.author['username']}){endstr}"
5556
log += line
5657
print(line)
57-
page+=1
58+
59+
page += 1
60+
list_mrs = project.mergerequests.list(state='merged',
61+
order_by='updated_at',
62+
updated_after=last_release.released_at,
63+
page=page
64+
)
65+
66+
return log
67+
68+
69+
def main():
70+
import argparse
71+
parser = argparse.ArgumentParser("Generate release notes for a gitlab repository \
72+
based on merge requests titles since last release")
73+
74+
# Required
75+
parser.add_argument("project_id", type=int)
76+
# Optional
77+
parser.add_argument("--url", default="https://gitlab.com", required=False)
78+
parser.add_argument("--private_token", type=str, required=False, default=None)
79+
80+
args = parser.parse_args()
81+
82+
notes = generate_release_notes(args.project_id, url=args.url, private_token=args.private_token)
83+
84+
85+
if __name__ == "__main__":
86+
main()

setup.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ def read(*paths, **kwargs):
1313
"""
1414
content = ""
1515
with io.open(
16-
os.path.join(os.path.dirname(__file__), *paths),
17-
encoding=kwargs.get("encoding", "utf8"),
16+
os.path.join(os.path.dirname(__file__), *paths),
17+
encoding=kwargs.get("encoding", "utf8"),
1818
) as open_file:
1919
content = open_file.read().strip()
2020
return content
@@ -39,7 +39,7 @@ def read_requirements(path):
3939
packages=find_packages(exclude=["gitlabrng/tests", ".github"]),
4040
install_requires=read_requirements("requirements.txt"),
4141
entry_points={
42-
"console_scripts": ["testtemplate2 = gitlabrng.__main__:main"]
42+
"console_scripts": ["gitlab-release-notes = gitlabrng.generate:main"]
4343
},
4444
extras_require={"test": read_requirements("requirements-test.txt")},
4545
)

0 commit comments

Comments
 (0)