Участие в разработке
Сообщение об ошибках
- Ошибка? Используйте шаблон отчёта об ошибке — сначала запустите
meridian doctor - Проблема с подключением? Используйте шаблон проблемы подключения — сначала запустите
meridian testиmeridian preflight - Идея функции? Используйте шаблон запроса функции
- Уязвимость безопасности? Смотрите Security — НЕ открывайте публичный issue
Настройка разработки
git clone https://github.com/uburuntu/meridian.git && cd meridian
# Установить CLI в режиме редактирования с зависимостями разработки
make install
# Установить pre-push hook (11 быстрых проверок перед каждым push)
make hooks
# Запустить полный CI локально
make ci
# Отдельные проверки:
make test # pytest
make lint # ruff check
make format-check # ruff format --check
make typecheck # mypy
make templates # Jinja2 template validation
Структура проекта
CLI — это Python пакет (src/meridian/) распространяемый через PyPI как meridian-vpn.
Ключевые модули:
cli.py— Typer приложение, регистрация подкомандcommands/— один модуль на подкомандуcredentials.py— dataclassServerCredentialsservers.py—ServerRegistryдля известных серверовprovision/— идемпотентный конвейер шагов
Pull requests
- Форкните репозиторий и создайте ветку из
main - Сделайте сосредоточенные, минимальные изменения
- Убедитесь что CI проходит:
make ci - Тестируйте на реальном сервере если возможно
- Откройте PR с чётким описанием
Ключевые соглашения
- Shell значения используют
shlex.quote()— никогда не интерполируйте несанитизированные значения - Шаблоны connection-info должны быть синхронизированы (CSS/JS/app ссылки)
- Конфиг Caddy идёт в
/etc/caddy/conf.d/meridian.caddy, не в основной Caddyfile - Шаги provisioner возвращают
StepResult(ok/changed/skipped/failed)
Тестирование
CI проверяет: Python тесты, ruff lint, mypy типы, рендеринг шаблонов и синтаксис shell скриптов. Полное развертывание тестирование требует реальный VPS.