Mesa (master): bin/gen_release_notes.py: escape special rST characters
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Sep 30 09:29:49 UTC 2020
Module: Mesa
Branch: master
Commit: 636f770233543c00c319895201498c57eece6774
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=636f770233543c00c319895201498c57eece6774
Author: Eric Engestrom <eric at engestrom.ch>
Date: Fri Sep 25 21:19:10 2020 +0200
bin/gen_release_notes.py: escape special rST characters
Signed-off-by: Eric Engestrom <eric at engestrom.ch>
Reviewed-by: Dylan Baker <dylan at pnwbakers.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6869>
---
bin/gen_release_notes.py | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/bin/gen_release_notes.py b/bin/gen_release_notes.py
index 716f807b317..880161181a8 100755
--- a/bin/gen_release_notes.py
+++ b/bin/gen_release_notes.py
@@ -25,6 +25,7 @@ import asyncio
import datetime
import os
import pathlib
+import re
import subprocess
import sys
import textwrap
@@ -74,7 +75,7 @@ TEMPLATE = Template(textwrap.dedent("""\
------------
%for f in features:
- - ${f}
+ - ${rst_escape(f)}
%endfor
@@ -82,7 +83,7 @@ TEMPLATE = Template(textwrap.dedent("""\
---------
%for b in bugs:
- - ${b}
+ - ${rst_escape(b)}
%endfor
@@ -91,15 +92,27 @@ TEMPLATE = Template(textwrap.dedent("""\
%for c, author_line in changes:
%if author_line:
- ${c}
+ ${rst_escape(c)}
%else:
- - ${c}
+ - ${rst_escape(c)}
%endif
%endfor
"""))
+def rst_escape(unsafe_str: str) -> str:
+ "Escape rST special chars when they follow or preceed a whitespace"
+ special = re.escape(r'`<>*_#[]|')
+ unsafe_str = re.sub(r'(^|\s)([' + special + r'])',
+ r'\1\\\2',
+ unsafe_str)
+ unsafe_str = re.sub(r'([' + special + r'])(\s|$)',
+ r'\\\1\2',
+ unsafe_str)
+ return unsafe_str
+
+
async def gather_commits(version: str) -> str:
p = await asyncio.create_subprocess_exec(
'git', 'log', '--oneline', f'mesa-{version}..', '--grep', r'Closes: \(https\|#\).*',
@@ -249,6 +262,7 @@ async def main() -> None:
header_underline=header_underline,
previous_version=previous_version,
vk_version=CURRENT_VK_VERSION,
+ rst_escape=rst_escape,
))
except:
print(exceptions.text_error_template().render())
More information about the mesa-commit
mailing list