Создание справочной страницы CLI python
Я разрабатываю инструмент CLI для python (используя optparse в python2.6, но надеюсь скоро переключиться на python2.7) и я собираюсь написать справочную страницу.
У меня есть некоторый опыт создания динамических страниц man:
- создание выделенного метода, который содержит строку в pod format и записывает ее в файл
- выполнение команды pod2man для генерации данных в формате groff для передачи команде man
Я также хотел бы создавать страницы вики с тем же содержимым, что и man-страница (с помощью pod я могу генерировать html через pod2html, и, вероятно, html можно легко перевести в формат wiki).
У кого-то есть лучшая идея/поток о том, как это сделать?
Одна интересная вещь, которую я нашел в этой ссылке: Создание персональных страниц с использованием optparse и distutils
Ответы
Ответ 1
Обычный способ создания документации в Python - использовать Sphinx. Например, это то, что используется в официальной документации Python. После того, как вы создали проект документации Sphinx (см. этот учебник), вы можете создавать man-страницы из файлов документации Sphinx с помощью make man
. Вы также должны изменить конфигурацию в conf.py
, чтобы создать соответствующий вывод.
(Стоит отметить, что хотя Sphinx является обычным инструментом для написания документации на Python, это не означает, что это обычный инструмент для создания man-страниц. Используйте то, что вы хотите!)
Ответ 2
В то время как sphinx - действительно отличная система документации, это ужасно сложно и сложно освоить. Если вам понадобится решение bang, я предлагаю вам посмотреть в моем проекте build_manpage.py.
Это не замена для надлежащего документирования ваших проектов (с помощью сфинкса или того, что когда-либо вы выбираете). Но у него есть некоторые непосредственные преимущества для программиста Python:
- Вам не нужно изучать синтаксис
man
.
- Вам не нужно изучать синтаксис
rst
(тем не менее, вам следует в один прекрасный день изучить его).
-
Вам не нужно поддерживать ваш optparser\argparser и man-страницу, сформированную во внешнем файле (в человеке, первой или любой другой системе преобразования).
-
Вы просто добавляете один файл в конфигурацию сборки, и для вас создается справочная страница!
Если вы хотите использовать более сложную систему, с множеством колоколов и свистов, sphinx позволяет конвертировать страницу rst
с формируемой страницы в man. И недавно молодой проект использует аналогичный подход к моему парсеру и сканирует ваш ArgumentParser
, чтобы создать отформатированную страницу rst
, с директивами sphinx (так что вам не нужно писать ее самостоятельно.
(Напротив, мой сканер создает справочную страницу напрямую).
Обратите внимание, что теперь это часть pull request для добавьте форматирование manpage в стандартную библиотеку.
Ответ 3
Я ищу аналогичный ответ. Я наткнулся на optparse/setup.py на основе решения, но, похоже, много кода для добавления. Однако в argparse будущее, может быть, argparse можно изменить, чтобы поддержать это?
Ответ 4
Если вы используете click
, вы можете использовать click-man.
Он может генерировать man-страницы из приложений кликов.