|
| 1 | +import datetime |
1 | 2 | import gitlab |
2 | 3 | import os.path |
3 | 4 | import sys |
4 | 5 | from .version import __version__ |
5 | 6 |
|
6 | | -def generate_release_notes(project_id, endstr = ' <br>', **config): |
| 7 | +def generate_release_notes(project_id, endstr = ' <br>', since=None, **config): |
7 | 8 | """ |
8 | 9 | Generate the release notes of a gitlab project from the last release |
9 | 10 |
|
@@ -35,7 +36,10 @@ def generate_release_notes(project_id, endstr = ' <br>', **config): |
35 | 36 | if not project.mergerequests.list(get_all=False,state='merged'): |
36 | 37 | raise ValueError(f"There is no merged merge request for project {project_id} {project.name}") |
37 | 38 |
|
38 | | - if not project.releases.list(get_all=False): |
| 39 | + if since: |
| 40 | + log = f"Changelog of {project.name} since {since}:{endstr}" |
| 41 | + last_date = since |
| 42 | + elif not project.releases.list(get_all=False): |
39 | 43 | log = f"Changelog of {project.name}:{endstr}" |
40 | 44 | last_date = '0000-01-01T00:00:00Z' |
41 | 45 | else: |
@@ -82,14 +86,20 @@ def main(): |
82 | 86 | parser.add_argument("--private_token", type=str, required=False, default=None) |
83 | 87 | parser.add_argument('--version', action='version', version=__version__) |
84 | 88 | parser.add_argument('--html', action='store_true') |
| 89 | + parser.add_argument('--since', type=datetime.date.fromisoformat, required=False, default=None) |
85 | 90 |
|
86 | 91 | args = parser.parse_args() |
87 | 92 |
|
88 | 93 | if args.html: |
89 | 94 | endstr = ' <br>' |
90 | 95 | else: |
91 | 96 | endstr = '\n' |
92 | | - notes = generate_release_notes(args.project_id, url=args.url, endstr=endstr, private_token=args.private_token) |
| 97 | + notes = generate_release_notes(args.project_id, |
| 98 | + url=args.url, |
| 99 | + endstr=endstr, |
| 100 | + since=args.since, |
| 101 | + private_token=args.private_token, |
| 102 | + ) |
93 | 103 | print(notes) |
94 | 104 |
|
95 | 105 | if __name__ == "__main__": |
|
0 commit comments