susechangelog.py (1225B)
1 '''Terminator plugin to make bug references clickable in RPM changelogs.''' 2 3 import re 4 from terminatorlib.plugin import URLHandler 5 6 7 AVAILABLE = ['SuseTrackersURLHandler'] 8 9 10 _TRACKERS = { 11 'bgo': 'https://bugzilla.gnome.org/show_bug.cgi?id={}', 12 'bmo': 'https://bugzilla.mozilla.org/show_bug.cgi?id={}', 13 'bnc': 'https://bugzilla.novell.com/show_bug.cgi?id={}', 14 'boo': 'https://bugzilla.opensuse.org/show_bug.cgi?id={}', 15 'bsc': 'https://bugzilla.suse.com/show_bug.cgi?id={}', 16 'fate': 'https://features.opensuse.org/{}', 17 'fdo': 'https://bugs.freedesktop.org/show_bug.cgi?id={}', 18 'glgo#gnome/gtk': 'https://gitlab.gnome.org/GNOME/gtk/issues/{}', 19 'kde': 'https://bugs.kde.org/show_bug.cgi?id={}' 20 } 21 22 _PATTERN = r'(?i)(?P<tracker>{t})#(?P<id>{i})'.format( 23 t='|'.join(_TRACKERS), 24 i='[0-9]+(?:#c[0-9]+)?' 25 ) 26 27 _REGEX = re.compile(_PATTERN) 28 29 30 class SuseTrackersURLHandler(URLHandler): 31 capabilities = ['url_handler'] 32 handler_name = 'suse_rpm_trackers' 33 match = r'\b'+_PATTERN+r'\b' 34 35 def callback(self, ref): 36 fields = _REGEX.match(ref).groupdict() 37 template = _TRACKERS[fields['tracker'].lower()] 38 bug_id = fields['id'] 39 return template.format(bug_id)