commit a2727dc7612bd08f8171267139f01d22cf3af59c
parent 843856e9fbedb0eb67dfbeb57aec4524afdda3bd
Author: KΓ©vin Le Gouguec <kevin.legouguec@gmail.com>
Date: Sun, 24 Jun 2018 11:00:21 +0200
Add Terminator plugin to make bug references clickable on OpenSUSE
Diffstat:
1 file changed, 57 insertions(+), 0 deletions(-)
diff --git a/.config/terminator/plugins/susechangelog.py b/.config/terminator/plugins/susechangelog.py
@@ -0,0 +1,57 @@
+'''Terminator plugin to make bug references clickable in RPM changelogs.'''
+
+import re
+from terminatorlib.plugin import URLHandler
+
+
+AVAILABLE = ['BugzillaSuseURLHandler', 'FreedesktopURLHandler']
+
+
+def _delimited(regex):
+ return r'\b'+regex+r'\b'
+
+
+# TODO: refactor, there are probably more elegant ways to re-use behaviour than
+# class attributes.
+
+
+class _ReferenceHandler(URLHandler):
+ capabilities = ['url_handler']
+ _delimiter = '#'
+
+ def __init__(self, *args, **kwargs):
+ self.match = _delimited(self._prefix+self._delimiter+self._id)
+ super(_ReferenceHandler, self).__init__(*args, **kwargs)
+
+ def callback(self, ref):
+ bug_id = re.search(self._id, ref).group()
+ url = self._template.format(bug_id)
+ return url
+
+
+class BugzillaSuseURLHandler(_ReferenceHandler):
+ handler_name = 'bugzilla.suse.com'
+ _prefix = 'bsc'
+ _id = '[0-9]+(#c[0-9]+)?'
+ _template = 'https://bugzilla.suse.com/show_bug.cgi?id={}'
+
+
+class FreedesktopURLHandler(_ReferenceHandler):
+ handler_name = 'bugs.freedesktop.org'
+ _prefix = 'fdo'
+ _id = '[0-9]+'
+ _template = 'https://bugs.freedesktop.org/show_bug.cgi?id={}'
+
+
+# Other ideas from gtk3-devel's changelog:
+# bgo#N
+# bmo#N
+# bnc#N
+# bog#N
+# boo#N
+# bsc#N
+# bug#N
+# commit#X
+# [Ff]ate#N
+# glgo#GNOME/GTK#N
+# kde#N