summaryrefslogtreecommitdiff
path: root/docs/_ext
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2016-09-26 15:37:08 -0400
committerTim Graham <timograham@gmail.com>2016-09-26 15:48:40 -0400
commita46742e738b91f79dd7b2e6ecba6dd1604e14d05 (patch)
tree9a55bc1a812291bc6509f8db5a94ff51db66895e /docs/_ext
parent8d233a2132c20d85f4e863a3eb62168f667c45df (diff)
Added a CVE role for Sphinx.
Diffstat (limited to 'docs/_ext')
-rw-r--r--docs/_ext/cve_role.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/docs/_ext/cve_role.py b/docs/_ext/cve_role.py
new file mode 100644
index 0000000000..254d3e679f
--- /dev/null
+++ b/docs/_ext/cve_role.py
@@ -0,0 +1,27 @@
+"""
+An interpreted text role to link docs to CVE issues. To use: :cve:`XXXXX`
+"""
+from docutils import nodes, utils
+from docutils.parsers.rst import roles
+
+
+def cve_role(name, rawtext, text, lineno, inliner, options=None, content=None):
+ if options is None:
+ options = {}
+
+ url_pattern = inliner.document.settings.env.app.config.cve_url
+ if url_pattern is None:
+ msg = inliner.reporter.warning("cve not configured: please configure cve_url in conf.py")
+ prb = inliner.problematic(rawtext, rawtext, msg)
+ return [prb], [msg]
+
+ url = url_pattern % text
+ roles.set_classes(options)
+ node = nodes.reference(rawtext, utils.unescape('CVE-%s' % text), refuri=url, **options)
+ return [node], []
+
+
+def setup(app):
+ app.add_config_value('cve_url', None, 'env')
+ app.add_role('cve', cve_role)
+ return {'parallel_read_safe': True}