04.27 Автоматизация
- Коротко: задача автоматизации
- Генераты: промежуточные и целевые
/
Принципы (на примере выгонки документации). В этом упражнении каждый участник модифицирует собственный текст, так что оно одновременно и
, и
Скопировать любое решение, в котором применяется Shpinx (например, Задание 0 из практикума по документированию)
Установить doit и создать простейший dodo.py с заданием docs, независимо ни от чего собирающем документацию
Написать задание erase, которое удаляет всё лишнее (
не забыть сначала закоммитить всё!). Добавить вызов заданий по умолчанию (DOIT_CONFIG = {"default_tasks": ['docs']}) Использовать файловые зависимости, чтобы документация перегенерировалась только при изменении исходных файлов (обычно это .rst и .py, если используется autodoc; может помочь pathlib.Path.glob)
Использовать целевые файлы, чтобы документация перегенерировалась при удалении генератов (достаточно index.html)
Как создать zip-архив с помощью ZipFile:
Написать задание zip, которое создаёт zip-архив с документацией, используя зависимости между заданиями Функция, которая делает glob(), должна вызываться после создания html
Добавить zip-targets, чтобы архив пересоздавался после удаления; обновить erase
Добавить генерат — текущий календарь в формате ReST (как было в исходном задании_0) Создать правило сборки month, поставить targets, включить в index.rst; обновить erase; docs должен зависеть от month
создание sphinx-build -M txt doc build
Использовать подзадания задание docs генерирует sphinx-ом и html, и text
Д/З
Задача_1. Автоматизация сборки для MUD.
Скопировать решение Задачи_1 с предыдущего занятия. Сделать коммит. Работать на ветке work.
реализовать цель i18n для полной генерации перевода
- реализовать цели-шаги генерации перевода, как в описанном выше упражнении
цель i18n должна зависеть от этих целей-шагов
реализовать цель html для генерации html-документации
реализовать цель test для прогона тестов связки клиент+сервер (зависит от цели i18n, потому что проверяет русифицированные ответы сервера)
для каждой цели реализовать удаление генератов (использовать атрибут clean и функцию clean_targets; для удаления каталога с документацией использовать функцию shutil.rmtree)
цель по умолчанию: html
