Комплексная система автоматизации документации
Project description
update-docs-system
Комплексная система автоматизации документации для проектов с Markdown файлами. Поддерживает автоматическое создание оглавлений, определение авторства, русскую навигацию и интеграцию с различными системами CI/CD.
🚀 Возможности
- Автоматическое создание оглавления - сканирует Markdown файлы и создает структурированное оглавление
- Система Content.json - генерирует метаданные документации с определением авторства
- Определение авторства - классифицирует файлы как созданные человеком, ИИ или автогенератором
- Русская навигация - добавляет ссылки "Домой" и "Назад" для удобной навигации
- Автогенераторы - поддержка создания и защиты автогенерированных файлов
- Множественные методы развертывания - PyPI, Git Submodule, Docker, GitHub Actions
- Автоматизация - GitHub Actions, pre-commit hooks, file watcher
📦 Установка и развертывание
Метод 1: PyPI пакет (Рекомендуется)
# Установка пакета
pip install update-docs-system
# Быстрая настройка в целевом репозитории
curl -sSL https://raw.githubusercontent.com/CoreTwin/docs_repo/main/scripts/setup_automation.sh | bash
# Или ручная настройка
update-docs --docs docs --content-json content/Content.json --description-md content/Description_for_agents.md
Метод 2: Git Submodule
# В целевом репозитории
git submodule add https://github.com/CoreTwin/docs_repo.git tools/update-docs
git submodule update --init --recursive
# Использование
cd tools/update-docs
python -m update_docs.cli --docs ../../docs --content-json ../../content/Content.json --description-md ../../content/Description_for_agents.md
Метод 3: Docker контейнер
# Сборка образа
docker build -t update-docs:latest https://github.com/CoreTwin/docs_repo.git
# Использование в целевом репозитории
docker run --rm -v $(pwd):/workspace update-docs:latest \
--docs docs \
--content-json content/Content.json \
--description-md content/Description_for_agents.md
Метод 4: GitHub Actions
Создайте .github/workflows/update-docs.yml в целевом репозитории:
name: 📚 Auto Update Documentation
on:
push:
branches: [main, master, develop]
paths: ['**/*.md', 'docs/**/*']
pull_request:
branches: [main, master, develop]
paths: ['**/*.md', 'docs/**/*']
jobs:
update-docs:
runs-on: ubuntu-latest
steps:
- name: 📥 Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: 🐍 Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
cache: 'pip'
- name: 📦 Install update-docs-system
run: pip install update-docs-system
- name: 🔍 Check for .md changes
id: check_changes
run: |
if [ "${{ github.event_name }}" = "pull_request" ]; then
CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD)
else
CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD 2>/dev/null || echo "")
fi
if echo "$CHANGED_FILES" | grep -E '\\.md$'; then
echo "md_changed=true" >> $GITHUB_OUTPUT
echo "📝 Markdown files changed, updating documentation..."
else
echo "md_changed=false" >> $GITHUB_OUTPUT
echo "ℹ️ No markdown files changed"
fi
- name: 📚 Update documentation
if: steps.check_changes.outputs.md_changed == 'true'
run: |
update-docs --docs docs --content-json content/Content.json --description-md content/Description_for_agents.md
echo "✅ Documentation updated successfully"
- name: 💾 Commit updated documentation
if: steps.check_changes.outputs.md_changed == 'true'
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action Bot"
mkdir -p content
git add content/Content.json content/Description_for_agents.md docs/ || true
if git diff --staged --quiet; then
echo "ℹ️ No changes to commit"
else
git commit -m "📚 Auto-update documentation"
if [ "${{ github.event_name }}" != "pull_request" ]; then
git push
echo "✅ Documentation committed and pushed"
fi
fi
🔧 Использование
Современная система (Content.json)
# Обновление документации с генерацией Content.json
update-docs --docs docs --content-json content/Content.json --description-md content/Description_for_agents.md
# Автоматическое определение системы по расширениям файлов
update-docs --docs docs --toc Content.json --toc-md Description_for_agents.md
Классическая система (toc.json)
# Создание JSON оглавления
update-docs --docs docs --toc toc.json
# Создание Markdown оглавления
update-docs --docs docs --toc toc.json --toc-md toc.md
# Генерация из существующего toc.json
update-docs --from-json --toc toc.json --toc-md toc.md
Справка по командам
# Получить полную справку
update-docs --help
# Примеры использования
update-docs --docs docs --content-json content/Content.json --description-md content/Description_for_agents.md
update-docs --toc toc.json --toc-md toc.md
🤖 Автоматизация
Автоматическая настройка
Используйте скрипт автоматической настройки для быстрого развертывания:
# Скачать и запустить скрипт настройки
curl -sSL https://raw.githubusercontent.com/CoreTwin/docs_repo/main/scripts/setup_automation.sh | bash
# Или локально (если репозиторий уже клонирован)
bash scripts/setup_automation.sh
Скрипт автоматически:
- Устанавливает update-docs-system
- Создает структуру папок (docs/, content/, .github/workflows/, scripts/)
- Настраивает GitHub Actions workflow
- Устанавливает pre-commit hook
- Создает file watcher для разработки
- Генерирует примеры документации
- Запускает первое обновление
Pre-commit Hook
Создайте .git/hooks/pre-commit:
#!/bin/bash
echo "🔍 Checking for markdown file changes..."
md_files_changed=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\\.md$' || true)
if [ -n "$md_files_changed" ]; then
echo "📝 Markdown files changed:"
echo "$md_files_changed" | sed 's/^/ - /'
echo ""
echo "🔄 Updating documentation..."
mkdir -p content
if command -v update-docs &> /dev/null; then
update-docs --docs docs --content-json content/Content.json --description-md content/Description_for_agents.md
update_result=$?
else
python3 -c "
try:
from update_docs.core import update_content_system
update_content_system('docs', 'content/Content.json', 'content/Description_for_agents.md')
print('✅ Documentation updated via Python import')
except Exception as e:
print(f'❌ Error: {e}')
exit(1)
"
update_result=$?
fi
if [ $update_result -eq 0 ]; then
git add content/Content.json content/Description_for_agents.md docs/ 2>/dev/null || true
echo "✅ Documentation updated and staged"
else
echo "❌ Failed to update documentation"
exit 1
fi
else
echo "ℹ️ No markdown files changed, skipping documentation update"
fi
File Watcher для разработки
# Установка зависимостей
pip install watchdog
# Запуск file watcher
python scripts/watch_docs.py
Makefile для удобства
.PHONY: docs-update docs-watch docs-install docs-setup help
help:
@echo "📚 Documentation Commands:"
@echo " docs-install - Install update-docs-system"
@echo " docs-setup - Setup automation (GitHub Actions, hooks, watcher)"
@echo " docs-update - Update documentation once"
@echo " docs-watch - Start file watcher for live updates"
docs-install:
@echo "📦 Installing update-docs-system..."
@pip install update-docs-system
docs-setup:
@echo "🚀 Setting up update-docs automation..."
@bash scripts/setup_automation.sh
docs-update:
@echo "📚 Updating documentation..."
@update-docs --docs docs --content-json content/Content.json --description-md content/Description_for_agents.md
@echo "✅ Documentation updated"
docs-watch:
@echo "👀 Starting documentation watcher..."
@python scripts/watch_docs.py
📁 Структура целевого репозитория
После настройки ваш репозиторий будет иметь следующую структуру:
target-repo/
├── docs/ # Документация проекта
│ ├── README.md
│ ├── api/
│ └── guides/
├── content/ # Метаданные документации
│ ├── Content.json # Генерируется update-docs
│ └── Description_for_agents.md # Генерируется update-docs
├── .github/
│ └── workflows/
│ └── update-docs.yml # CI/CD для документации
├── scripts/
│ └── watch_docs.py # File watcher для разработки
├── .git/hooks/
│ └── pre-commit # Pre-commit hook
├── Makefile # Команды для удобства
└── .gitignore # Исключения для временных файлов
🔍 Определение авторства
Система автоматически определяет тип автора для каждого файла:
- human - файлы, созданные человеком
- ai - файлы, созданные ИИ (по git истории или маркерам)
- generator - автогенерированные файлы (защищены от редактирования)
- mixed - файлы со смешанным авторством
Маркеры автогенерации
<!-- AUTO-GENERATED -->
<!-- AI-GENERATED -->
<!-- GENERATOR: script_name.py -->
📊 Content.json структура
[
{
"path": "docs/README.md",
"title": "Project Documentation",
"author": "human",
"editable": true,
"file_id": "readme-a1b2c3d4",
"headers": [
{
"level": 1,
"title": "Project Documentation",
"id": "project-documentation",
"parent_id": null,
"excerpt": "Welcome to the project..."
}
]
}
]
🏠 Навигационные ссылки
Система автоматически добавляет русские навигационные ссылки:
- 🏠 Домой - ссылка на главную страницу
- ⬆️ Назад - ссылка на родительский документ
🧪 Тестирование интеграции
Проверьте работу системы в вашем репозитории:
# Тест установки пакета
pip install update-docs-system
# Тест базовой функциональности
update-docs --docs docs --content-json content/Content.json --description-md content/Description_for_agents.md
# Проверка созданных файлов
ls -la content/
cat content/Content.json | head -20
# Тест внешнего развертывания
python test_external_deployment.py
🚀 Быстрый старт
-
Установите пакет:
pip install update-docs-system
-
Запустите автоматическую настройку:
curl -sSL https://raw.githubusercontent.com/CoreTwin/docs_repo/main/scripts/setup_automation.sh | bash
-
Или настройте вручную:
# Создайте структуру папок mkdir -p docs content .github/workflows scripts # Запустите первое обновление update-docs --docs docs --content-json content/Content.json --description-md content/Description_for_agents.md # Зафиксируйте изменения git add . git commit -m "Setup update-docs automation" git push
🔧 Настройка для разных сценариев
Для команды разработчиков
- PyPI пакет + GitHub Actions для автоматизации
- Pre-commit hooks для локальной проверки
Для личных проектов
- Git Submodule + локальные скрипты
- File watcher для активной разработки документации
Для CI/CD интеграции
- Docker контейнер для изоляции
- GitHub Actions с кешированием зависимостей
📋 Checklist для внедрения
- Выбрать способ развертывания (PyPI/Git Submodule/Docker/GitHub Actions)
- Установить update-docs-system в целевом репозитории
- Создать структуру папок (docs/, content/, scripts/)
- Настроить автоматизацию (GitHub Actions/pre-commit/file watcher)
- Запустить первое обновление документации
- Протестировать работу системы
- Обновить .gitignore для исключения временных файлов
- Документировать процесс для команды
🤖 Автогенераторы
Создание автогенератора:
from update_docs.core import register_auto_generator
@register_auto_generator("example_generator.py")
def create_example_docs():
return "<!-- AUTO-GENERATED -->\n# Generated Documentation"
🔧 Разработка и тестирование
Локальная разработка
# Клонирование репозитория
git clone https://github.com/CoreTwin/docs_repo.git
cd docs_repo
# Установка в режиме разработки
pip install -e .
# Запуск тестов
python -m pytest tests/ -v
# Тестирование внешнего развертывания
python test_external_deployment.py
Структура проекта
update_docs/
├── __init__.py # Основной модуль
├── cli.py # Интерфейс командной строки
├── core.py # Основная логика
└── templates/ # Шаблоны автоматизации
├── github_workflow.yml
├── pre_commit_hook.sh
├── watch_docs.py
├── setup_automation.sh
└── Makefile
content/ # Метаданные документации
├── Content.json # Структурированные данные о файлах
└── Description_for_agents.md # Описание для ИИ-систем
scripts/ # Вспомогательные скрипты
├── build_and_publish.sh # Сборка и публикация пакета
└── setup_automation.sh # Настройка автоматизации
tests/ # Тесты
├── test_cli.py # Тесты CLI
└── test_core.py # Тесты основной логики
📋 Итоги реализации
✅ Завершенные функции
- Система Content.json - полная замена toc.json с расширенными метаданными
- Определение авторства - многоуровневая система классификации файлов
- Автогенераторы - поддержка создания и защиты автогенерированных файлов
- Русская навигация - ссылки "Домой" и "Назад" во всех документах
- Множественные методы развертывания - PyPI, Git Submodule, Docker, GitHub Actions
- Автоматизация - GitHub Actions, pre-commit hooks, file watcher
- Persistent file IDs - отслеживание файлов при переименовании
- Иерархические заголовки - parent_id и excerpt для каждого заголовка
- Внешнее развертывание - полная изоляция от целевых репозиториев
- Комплексное тестирование - интеграционные тесты для внешнего развертывания
🔧 Технические особенности
- Обратная совместимость с toc.json системой
- Автоматическое определение типа системы по расширениям файлов
- Защита автогенерированных файлов от случайного редактирования
- Поддержка аннотаций и дополнительной информации к заголовкам
- Интеграция с git для определения авторства по истории коммитов
- PyPI-совместимая структура пакета с шаблонами автоматизации
- Полная изоляция кода от целевых репозиториев
📚 Ссылки на документацию:
- Content.json - Структурированные метаданные
- Description for Agents - Описание для ИИ-систем
- Deployment Guide - Подробное руководство по развертыванию
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file update_docs_system-1.0.4.tar.gz.
File metadata
- Download URL: update_docs_system-1.0.4.tar.gz
- Upload date:
- Size: 29.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67e31235bc93e4bfd4c1d33f48ccbfb3b331ac0afc8542ce333e62e9567cf0f1
|
|
| MD5 |
4bc06b813be43839a1f04fee5c1f5b99
|
|
| BLAKE2b-256 |
f53f86fc6b55e10536aa1400a02523d0447717905eddeb9f44e28d5911f47a3d
|
File details
Details for the file update_docs_system-1.0.4-py3-none-any.whl.
File metadata
- Download URL: update_docs_system-1.0.4-py3-none-any.whl
- Upload date:
- Size: 24.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17c9aa56803c9c0f20f600ec2ec89ac226a348c48f3e26c150390f4378064124
|
|
| MD5 |
ca973f1e6131cf86be8ef04f5a24513e
|
|
| BLAKE2b-256 |
3d25ea62cdd5afede2af73b01d85bb32f8116d38a136eaa902fa3bbf4560f8c0
|