Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
yt-project
GitHub Repository: yt-project/yt
Path: blob/main/doc/extensions/config_help.py
928 views
1
import re
2
import subprocess
3
4
from docutils import statemachine
5
from docutils.parsers.rst import Directive
6
7
8
def setup(app):
9
app.add_directive("config_help", GetConfigHelp)
10
setup.app = app
11
setup.config = app.config
12
setup.confdir = app.confdir
13
14
retdict = dict(version="1.0", parallel_read_safe=True, parallel_write_safe=True)
15
16
return retdict
17
18
19
class GetConfigHelp(Directive):
20
required_arguments = 1
21
optional_arguments = 0
22
final_argument_whitespace = True
23
24
def run(self):
25
rst_file = self.state_machine.document.attributes["source"]
26
data = (
27
subprocess.check_output(self.arguments[0].split(" ") + ["-h"])
28
.decode("utf8")
29
.split("\n")
30
)
31
ind = next(
32
(i for i, val in enumerate(data) if re.match(r"\s{0,3}\{.*\}\s*$", val))
33
)
34
lines = [".. code-block:: none", ""] + data[ind + 1 :]
35
self.state_machine.insert_input(
36
statemachine.string2lines("\n".join(lines)), rst_file
37
)
38
return []
39
40