aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaito Bezarius <raito@lix.systems>2024-05-14 01:17:47 +0200
committerJade Lovelace <lix@jade.fyi>2024-05-14 19:26:09 -0700
commitc52eba44241cd6d973b1924b193a1df517a14128 (patch)
tree2ba2c9e852c065a4f479d27600d8b5678a463933
parenta30c5673367533aec48faa59dd0d76b283dda1ba (diff)
feat: add `credits` field to release note generator
Now, we can credit folks for their work. The credit generator is very basic, we probably want a database of profiles and link to their preferred page or something. Change-Id: Ida81905750371e5e125d0ce7e554d0526265cf8e Co-Authored-By: Jade Lovelace <lix@jade.fyi> Signed-off-by: Raito Bezarius <raito@lix.systems>
-rw-r--r--maintainers/build-release-notes.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/maintainers/build-release-notes.py b/maintainers/build-release-notes.py
index 2a154a61e..85bc40aba 100644
--- a/maintainers/build-release-notes.py
+++ b/maintainers/build-release-notes.py
@@ -6,6 +6,7 @@ import textwrap
GH_BASE = "https://github.com/NixOS/nix"
FORGEJO_BASE = "https://git.lix.systems/lix-project/lix"
GERRIT_BASE = "https://gerrit.lix.systems/c/lix/+"
+KNOWN_KEYS = ('synopsis', 'cls', 'issues', 'prs', 'significance', 'credits')
SIGNIFICANCECES = {
None: 0,
@@ -31,6 +32,13 @@ def format_pr(pr: str) -> str:
def format_cl(clid: int) -> str:
return f"[cl/{clid}]({GERRIT_BASE}/{clid})"
+def plural_list(strs: list[str]) -> str:
+ if len(strs) <= 1:
+ return ''.join(strs)
+ else:
+ comma = ',' if len(strs) >= 3 else ''
+ return '{}{} and {}'.format(', '.join(strs[:-1]), comma, strs[-1])
+
def run_on_dir(d):
paths = pathlib.Path(d).glob('*.md')
entries = []
@@ -39,7 +47,7 @@ def run_on_dir(d):
e = frontmatter.load(p)
if 'synopsis' not in e.metadata:
raise Exception('missing synopsis')
- unknownKeys = set(e.metadata.keys()) - set(('synopsis', 'cls', 'issues', 'prs', 'significance'))
+ unknownKeys = set(e.metadata.keys()) - set(KNOWN_KEYS)
if unknownKeys:
raise Exception('unknown keys', unknownKeys)
entries.append((p, e))
@@ -66,7 +74,9 @@ def run_on_dir(d):
print(f"- {header}")
print()
print(textwrap.indent(entry.content, ' '))
- print()
+ if credits := listify(entry.metadata.get('credits', [])):
+ print()
+ print(textwrap.indent('Many thanks to {} for this.'.format(plural_list(credits)), ' '))
except Exception as e:
e.add_note(f"in {p}")
raise