Evaluate shell command or python code in sphinx and myst.
See here.
docs/conf.py
extensions = [ "sphinxcontrib.eval", ]Or
extensions = [ "myst_parser", "sphinxcontrib.eval", # must be after myst_parser ]For myst:
```{eval-sh} echo My OS is $OSTYPE. ```For rst:
.. eval-sh:: echo My OS is $OSTYPE. Then build:
sphinx-build docs docs/_build/htmlResult:
My OS is linux-gnu. NOTE: the current working directory depends on you. That is, if you run cd docs && sphinx-build . _build/html && cd -, CWD will be docs, which is the default setting of https://readthedocs.org. So if your code structure is like
$ tree --level 1 . ├── docs ├── scripts ├── src └── testsAnd you want to run scripts/*.sh, you need cd .. firstly from docs to . else you have to run ../scripts/*.sh.
All of the following examples are myst. The corresponding examples of rst are similar. Click the hyperlinks of the titles and scripts to see the actual examples.
Note: A more "sphinx" solution is sphinxcontrib-autofile.
Before:
# API of Translate Shell ```{eval-rst} .. automodule:: translate_shell :members: .. automodule:: translate_shell.__main__ :members: ... (More) ```Now
# API of Translate Shell ````{eval-rst} ```{eval-sh} cd .. scripts/generate-api.md.pl src/*/*.py ``` ````Where scripts/generate-api.md.pl replaces all src/translate_shell/XXX.pys to
.. automodule:: translate_shell.XXX :members:Before:
# TODO - <https://github.com/Freed-Wu/tranlate-shell/tree/main/src/translate_shell/translators/stardict/__init__.py#L4> more stardicts. - <https://github.com/Freed-Wu/tranlate-shell/tree/main/src/translate_shell/translators/stardict/__init__.py#L5> Create different subclasses for different dict to get phonetic, explains - <https://github.com/Freed-Wu/tranlate-shell/tree/main/src/translate_shell/ui/repl.py#L33> make the last line gray like ptpython - ...Now: (notice eval-bash because readthedocs uses dash as their default $SHELL)
# TODO ```{eval-bash} cd .. shopt -s globstar scripts/generate-todo.md.pl src/**/*.py ```Where scripts/generate-todo.md.pl searches all TODOs in code then convert them to correct hyperlinks.
Note: A more "sphinx" solution is sphinxcontrib-requirements-txt.
Before:
# Requirements ## completion Generate shell completion scripts. - [shtab](https://pypi.org/project/shtab) ...Now
# Requirements ```{eval-sh} cd .. generate-requirements.md.pl ```Where scripts/generate-requirements.md.pl searches all requirements/*.txts and requirements/completion.txt is:
#!/usr/bin/env -S pip install -r # Generate shell completion scripts. shtab See document to know more.