2.8 KiB
2.8 KiB
RazorConsole — Контрибьюция
Начало работы
- Для крупных PR, рефакторингов, новых фич — сначала создай Issue для обсуждения
- Discord: https://discord.gg/DphHAnJxCM — мейнтейнеры активны там
Настройка окружения разработки
Требования
- .NET 8.0 или 9.0 SDK
- Git LFS (для крупных медиафайлов)
Клонирование
git lfs install
git clone https://github.com/RazorConsole/RazorConsole.git
cd RazorConsole
dotnet build RazorConsole.slnx
dotnet test RazorConsole.slnx
Стандарты кода
- Следовать правилам
.editorconfig(4 пробела, file-scoped namespaces, System usings первые) - Предпочитать
async/awaitсConfigureAwait(false)в библиотечном коде - Public API: nullable-enabled, документировать исключения и edge cases
- Spectre.Console renderables — immutable вне rendering loops
Перед отправкой PR
dotnet format RazorConsole.slnx # форматирование
dotnet test RazorConsole.slnx # тесты (должны пройти на Linux и Windows)
При изменениях в focus/keyboard handling — добавить/обновить тесты в FocusManagerTests или KeyboardEventManagerTests.
Процесс PR
- Создать Issue для крупных изменений
- Форкнуть репозиторий, создать ветку от
main - Сделать изменения, соблюдая стандарты кода
- Написать/обновить тесты
- Запустить
dotnet formatиdotnet test - Отправить PR с описанием изменений
Структура тестов
- Тесты находятся в
src/RazorConsole.Tests - CI требует чистого прохождения на Linux и Windows
- Покрытие: Codecov (Cobertura format)
Документация
README.md— обновлять при user-facing изменениях- XML doc-комментарии для public API
examples/— добавлять примеры для новых фичdesign-doc/— архитектурные заметки
Git LFS
Отслеживаемые типы файлов: *.gif, *.png, *.jpg, *.jpeg, *.mp4, *.mov, *.avi, *.zip, *.tar.gz, *.pdf.
Релизный процесс
Создание GitHub Release запускает .github/workflows/release.yml — сборка, тесты, паковка и публикация. Версии следуют семантическому версионированию.