from docutils import nodes from docutils.parsers.rst import Directive from shutil import which import shlex class D2langDirective(Directive): has_content = True def run(self): diag_source = self.content d2_bin = which('d2') cmd_line = "echo %s | %s - %s" % (diag_source, d2_bin, "/tmp/test.svg") args = shlex.split(cmd_line) subprocess.run(args) paragraph_node = nodes.paragraph(text="""BobBobAliceAlicehello""") return [paragraph_node]