Use gitlab-friendly URLs when formatting changelogs as HTML

Our old https://bugs.torproject.org/nnnn URLs only work for bugs
numbered before 40000.  Newer gitlab bugs need to have specific
projects mentioned.

This patch assumes that bugs are in tpo/core/tor by default, but
allows us to refer to several other projects by saying
e.g. "chutney#40002" if we want.
This commit is contained in:
Nick Mathewson 2020-07-17 09:31:32 -04:00
parent 07f3345e11
commit 09601c3c4d

View File

@ -405,10 +405,31 @@ class ChangeLog(object):
self.dumpEndOfSections() self.dumpEndOfSections()
self.dumpEndOfChangelog() self.dumpEndOfChangelog()
# Map from issue prefix to pair of (visible prefix, url prefix)
ISSUE_PREFIX_MAP = {
"" : ( "", "tpo/core/tor" ),
"tor#" : ( "", "tpo/core/tor" ),
"chutney#" : ( "chutney#", "tpo/core/chutney" ),
"torspec#" : ( "torspec#", "tpo/core/torspec" ),
"trunnel#" : ( "trunnel#", "tpo/core/trunnel" ),
"torsocks#" : ( "torsocks#", "tpo/core/torsocks"),
}
# Let's turn bugs to html. # Let's turn bugs to html.
BUG_PAT = re.compile('(bug|ticket|issue|feature)\s+(\d{4,5})', re.I) BUG_PAT = re.compile('(bug|ticket|issue|feature)\s+([\w/]+#)?(\d{4,6})', re.I)
def bug_html(m): def bug_html(m):
return "%s <a href='https://bugs.torproject.org/%s'>%s</a>" % (m.group(1), m.group(2), m.group(2)) kind = m.group(1)
prefix = m.group(2) or ""
bugno = m.group(3)
try:
disp_prefix, url_prefix = ISSUE_PREFIX_MAP[prefix]
except KeyError:
print("Can't figure out URL for {}{}".formt(prefix,bugno),
file=sys.stderr)
return "{} {}{}".format(kind, prefix, bugno)
return "{} <a href='https://bugs.torproject.org/{}/{}'>{}{}</a>".format(
kind, url_prefix, bugno, disp_prefix, bugno)
class HTMLChangeLog(ChangeLog): class HTMLChangeLog(ChangeLog):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):