109 lines
4.2 KiB
Diff
109 lines
4.2 KiB
Diff
|
Index: b/doc/arm/conf.py
|
||
|
===================================================================
|
||
|
--- a/doc/arm/conf.py
|
||
|
+++ b/doc/arm/conf.py
|
||
|
@@ -18,54 +18,58 @@ from docutils.nodes import Node, system_
|
||
|
from docutils.parsers.rst import roles
|
||
|
|
||
|
from sphinx import addnodes
|
||
|
-from sphinx.util.docutils import ReferenceRole
|
||
|
+try:
|
||
|
+ from sphinx.util.docutils import ReferenceRole
|
||
|
|
||
|
+ GITLAB_BASE_URL = 'https://gitlab.isc.org/isc-projects/bind9/-/'
|
||
|
|
||
|
-GITLAB_BASE_URL = 'https://gitlab.isc.org/isc-projects/bind9/-/'
|
||
|
|
||
|
-
|
||
|
-# Custom Sphinx role enabling automatic hyperlinking to GitLab issues/MRs.
|
||
|
-class GitLabRefRole(ReferenceRole):
|
||
|
- def __init__(self, base_url: str) -> None:
|
||
|
- self.base_url = base_url
|
||
|
- super().__init__()
|
||
|
-
|
||
|
- def run(self) -> Tuple[List[Node], List[system_message]]:
|
||
|
- gl_identifier = '[GL %s]' % self.target
|
||
|
-
|
||
|
- target_id = 'index-%s' % self.env.new_serialno('index')
|
||
|
- entries = [('single', 'GitLab; ' + gl_identifier, target_id, '', None)]
|
||
|
-
|
||
|
- index = addnodes.index(entries=entries)
|
||
|
- target = nodes.target('', '', ids=[target_id])
|
||
|
- self.inliner.document.note_explicit_target(target)
|
||
|
-
|
||
|
- try:
|
||
|
- refuri = self.build_uri()
|
||
|
- reference = nodes.reference('', '', internal=False, refuri=refuri,
|
||
|
- classes=['gl'])
|
||
|
- if self.has_explicit_title:
|
||
|
- reference += nodes.strong(self.title, self.title)
|
||
|
- else:
|
||
|
- reference += nodes.strong(gl_identifier, gl_identifier)
|
||
|
- except ValueError:
|
||
|
- error_text = 'invalid GitLab identifier %s' % self.target
|
||
|
- msg = self.inliner.reporter.error(error_text, line=self.lineno)
|
||
|
- prb = self.inliner.problematic(self.rawtext, self.rawtext, msg)
|
||
|
- return [prb], [msg]
|
||
|
-
|
||
|
- return [index, target, reference], []
|
||
|
-
|
||
|
- def build_uri(self):
|
||
|
- if self.target[0] == '#':
|
||
|
- return self.base_url + 'issues/%d' % int(self.target[1:])
|
||
|
- if self.target[0] == '!':
|
||
|
- return self.base_url + 'merge_requests/%d' % int(self.target[1:])
|
||
|
- raise ValueError
|
||
|
-
|
||
|
-
|
||
|
-def setup(_):
|
||
|
- roles.register_local_role('gl', GitLabRefRole(GITLAB_BASE_URL))
|
||
|
+ # Custom Sphinx role enabling automatic hyperlinking to GitLab issues/MRs.
|
||
|
+ class GitLabRefRole(ReferenceRole):
|
||
|
+ def __init__(self, base_url: str) -> None:
|
||
|
+ self.base_url = base_url
|
||
|
+ super().__init__()
|
||
|
+
|
||
|
+ def run(self) -> Tuple[List[Node], List[system_message]]:
|
||
|
+ gl_identifier = '[GL %s]' % self.target
|
||
|
+
|
||
|
+ target_id = 'index-%s' % self.env.new_serialno('index')
|
||
|
+ entries = [('single', 'GitLab; ' + gl_identifier, target_id, '', None)]
|
||
|
+
|
||
|
+ index = addnodes.index(entries=entries)
|
||
|
+ target = nodes.target('', '', ids=[target_id])
|
||
|
+ self.inliner.document.note_explicit_target(target)
|
||
|
+
|
||
|
+ try:
|
||
|
+ refuri = self.build_uri()
|
||
|
+ reference = nodes.reference('', '', internal=False, refuri=refuri,
|
||
|
+ classes=['gl'])
|
||
|
+ if self.has_explicit_title:
|
||
|
+ reference += nodes.strong(self.title, self.title)
|
||
|
+ else:
|
||
|
+ reference += nodes.strong(gl_identifier, gl_identifier)
|
||
|
+ except ValueError:
|
||
|
+ error_text = 'invalid GitLab identifier %s' % self.target
|
||
|
+ msg = self.inliner.reporter.error(error_text, line=self.lineno)
|
||
|
+ prb = self.inliner.problematic(self.rawtext, self.rawtext, msg)
|
||
|
+ return [prb], [msg]
|
||
|
+
|
||
|
+ return [index, target, reference], []
|
||
|
+
|
||
|
+ def build_uri(self):
|
||
|
+ if self.target[0] == '#':
|
||
|
+ return self.base_url + 'issues/%d' % int(self.target[1:])
|
||
|
+ if self.target[0] == '!':
|
||
|
+ return self.base_url + 'merge_requests/%d' % int(self.target[1:])
|
||
|
+ raise ValueError
|
||
|
+
|
||
|
+
|
||
|
+ def setup(_):
|
||
|
+ roles.register_local_role('gl', GitLabRefRole(GITLAB_BASE_URL))
|
||
|
+
|
||
|
+except ImportError:
|
||
|
+ # better loose this feature, than failing the build
|
||
|
+ pass
|
||
|
|
||
|
#
|
||
|
# Configuration file for the Sphinx documentation builder.
|