Документирование команд CLI с помощью Sphinx doc
Мне нужно документировать многие команды CLI, используя Sphinx doc. Я искал повсюду расширение, которое можно было бы использовать для получения вывода, аналогичного тому, как github документирует команды CLI:
https://developer.github.com/v3/
Есть ли какие-то расширения, которые я пропустил, которые могли бы помочь с этим? Если нет, может ли кто-нибудь указать направление для его создания?
Мне нужно, чтобы я мог документировать, например, так:
.. sourcecode:: cli
$ curl -i "https://api.github.com/repos/vmg/redcarpet/issues?state=closed"
и иметь этот выход.
Спасибо!
2 ответа
Существует широкий спектр тем, чтобы изменить внешний вид по умолчанию, как .. code::
директивные ручки. Например:
.. code::
$ curl -i "https://api.github.com/repos/vmg/redcarpet/issues?state=closed"
Выходы с темой по умолчанию:
С помощью sphinx_bootstrap_theme:
Однако, если вы хотите создать более близкое ощущение к документам GitHub, вы можете расширить CSS по умолчанию и использовать .. raw::
директива для вызова пользовательского класса. Я создал файл _static/cli.css в моей папке с документами:
.cli {
border: 1px solid #cacaca;
font: 12px/1.4em Consolas, 'Liberation Mono', Courier, monospace;
padding: 10px;
overflow:auto;
border-radius: 3px;
margin: 2em 0;
background-color: #444;
color: #fff;
position: relative;
}
Затем добавил следующее в conf.py. Есть и другие способы расширения CSS, но я выбрал именно этот в то время.
html_static_path = ['_static']
def setup(app):
app.add_stylesheet('cli.css')
Наконец, в первый раз я вызвал новый класс, используя .. raw::
директивы.
.. raw:: html
<div class='cli'>
$ curl -i "https://api.github.com/repos/vmg/redcarpet/issues?state=closed" <br>
$ curl -i "https://api.github.com/repos/vmg/redcarpet/issues?state=closed" <br>
$ curl -i "https://api.github.com/repos/vmg/redcarpet/issues?state=closed" <br>
$ curl -i "https://api.github.com/repos/vmg/redcarpet/issues?state=closed" <br>
</div>
Теперь это можно улучшить с помощью пользовательской директивы.
Как упомянул @cole, "это можно улучшить с помощью пользовательской директивы" - на самом деле уже есть одна подсказка sphinx (или проверьте репозиторий github)
Вы можете установить через pip install sphinx-prompt
и просто добавить 'sphinx-prompt',
на ваш extensions
кортеж в conf.py.
После этого вы просто используете директиву .. prompt:: bash
с командой под как
.. prompt:: bash
curl -i "https://api.github.com/repos/vmg/redcarpet/issues?state=closed"
и он будет выводить как
$ curl -i "https://api.github.com/repos/vmg/redcarpet/issues?state=closed"
с дополнительной осторожностью, что $ не выбирается.
Вы можете увидеть это в действии на этой странице, над которой я работаю (прокрутите вниз, подсказки имеют желтоватый фон)