summaryrefslogtreecommitdiff
path: root/.config
diff options
context:
space:
mode:
authorKévin Le Gouguec <kevin.legouguec@gmail.com>2018-06-24 11:00:21 +0200
committerKévin Le Gouguec <kevin.legouguec@gmail.com>2018-06-24 11:05:43 +0200
commita2727dc7612bd08f8171267139f01d22cf3af59c (patch)
tree948779e53239f2efdf5ed6db5befbcccfe6797da /.config
parent843856e9fbedb0eb67dfbeb57aec4524afdda3bd (diff)
downloaddotfiles-a2727dc7612bd08f8171267139f01d22cf3af59c.tar.xz
Add Terminator plugin to make bug references clickable on OpenSUSE
Diffstat (limited to '.config')
-rw-r--r--.config/terminator/plugins/susechangelog.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/.config/terminator/plugins/susechangelog.py b/.config/terminator/plugins/susechangelog.py
new file mode 100644
index 0000000..24b9f17
--- /dev/null
+++ 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