From a46742e738b91f79dd7b2e6ecba6dd1604e14d05 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Mon, 26 Sep 2016 15:37:08 -0400 Subject: Added a CVE role for Sphinx. --- docs/_ext/cve_role.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 docs/_ext/cve_role.py (limited to 'docs/_ext/cve_role.py') 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} -- cgit v1.3