'''Terminator plugin to make bug references clickable in RPM changelogs.''' import re from terminatorlib.plugin import URLHandler AVAILABLE = ['SuseTrackersURLHandler'] _TRACKERS = { 'bsc': 'https://bugzilla.suse.com/show_bug.cgi?id={}', 'fate': 'https://features.opensuse.org/{}', 'fdo': 'https://bugs.freedesktop.org/show_bug.cgi?id={}' } _MATCH = r'(?i)(?P{t})#(?P{i})'.format( t='|'.join(_TRACKERS), i='[0-9]+(?:#c[0-9]+)?' ) class SuseTrackersURLHandler(URLHandler): capabilities = ['url_handler'] handler_name = 'suse_rpm_trackers' match = r'\b'+_MATCH+r'\b' def callback(self, ref): fields = re.match(_MATCH, ref).groupdict() template = _TRACKERS[fields['tracker'].lower()] bug_id = fields['id'] return template.format(bug_id) # Other ideas from gtk3-devel's changelog: # bgo#N # bmo#N # bnc#N # bog#N # boo#N # bsc#N # bug#N # commit#X # glgo#GNOME/GTK#N # kde#N