Проект включает набор утилитарных скриптов, организованных по платформам в директории scripts/. Эти скрипты предоставляют удобные обертки для типовых задач разработки.
scripts/
├── python/ # Основные Python скрипты
│ ├── setup.py # Установка зависимостей и настройка окружения
│ ├── migrate.py # Миграции базы данных
│ ├── run.py # Запуск бота
│ ├── test.py # Запуск тестов
│ ├── lint.py # Проверка кода
│ ├── format.py # Форматирование кода
│ └── context_gen.py # Генерация контекста проекта
├── linux/ # Обертки для Linux shell
│ ├── setup.sh
│ ├── migrate.sh
│ ├── run.sh
│ ├── test.sh
│ ├── lint.sh
│ └── format.sh
└── windows/ # Обертки для Windows PowerShell
├── setup.ps1
├── migrate.ps1
├── run.ps1
├── test.ps1
├── lint.ps1
└── format.ps1
Все Python скрипты находятся в scripts/python/ и могут быть запущены напрямую или как модули.
python scripts/python/setup.py
python scripts/python/migrate.py
python scripts/python/run.pypython -m scripts.python.setup
python -m scripts.python.migrate
python -m scripts.python.runУстанавливает пакет в editable режиме с dev-зависимостями и создает файл .env из .env.example, если он не существует.
Использование:
# Linux/macOS
./scripts/linux/setup.sh
# Windows PowerShell
.\scripts\windows\setup.ps1
# Прямой Python
python scripts/python/setup.pyЗапускает миграции базы данных Alembic. Поддерживает все команды Alembic.
Использование:
# Обновить до последней версии
python scripts/python/migrate.py
# Пользовательская команда Alembic
python scripts/python/migrate.py downgrade -1
python scripts/python/migrate.py revision -m "add new table"Применяет миграции базы данных и запускает бота.
Использование:
python scripts/python/run.pyЗапускает pytest с покрытием. Поддерживает аргументы pytest.
Использование:
# Запустить все тесты
python scripts/python/test.py
# Запустить конкретный файл
python scripts/python/test.py tests/test_invoice_service.py
# Запустить с маркером
python scripts/python/test.py -m "not storage_db"Запускает проверки качества кода: ruff check и mypy type checking.
Использование:
python scripts/python/lint.pyФорматирует код с помощью ruff formatter.
Использование:
python scripts/python/format.pyГенерирует файл полного контекста проекта (full_project_context.txt), содержащий все файлы проекта для AI контекста.
Использование:
python scripts/python/context_gen.pyОбертки для Linux shell находятся в scripts/linux/. Они предоставляют удобные ярлыки для Python скриптов.
Сделать скрипты исполняемыми:
chmod +x scripts/linux/*.shИспользование:
./scripts/linux/setup.sh
./scripts/linux/migrate.sh
./scripts/linux/run.sh
./scripts/linux/test.sh
./scripts/linux/lint.sh
./scripts/linux/format.shВсе скрипты поддерживают передачу аргументов в базовые Python скрипты:
./scripts/linux/test.sh -m "not storage_db"
./scripts/linux/migrate.sh downgrade -1Обертки для Windows PowerShell находятся в scripts/windows/.
Использование:
.\scripts\windows\setup.ps1
.\scripts\windows\migrate.ps1
.\scripts\windows\run.ps1
.\scripts\windows\test.ps1
.\scripts\windows\lint.ps1
.\scripts\windows\format.ps1Примечание: Если вы столкнулись с ограничениями политики выполнения, выполните:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserВсе скрипты поддерживают передачу аргументов:
.\scripts\windows\test.ps1 -m "not storage_db"
.\scripts\windows\migrate.ps1 downgrade -1# Linux/macOS
./scripts/linux/setup.sh
# Windows
.\scripts\windows\setup.ps1# Форматировать код
./scripts/linux/format.sh # или .\scripts\windows\format.ps1
# Проверить код
./scripts/linux/lint.sh # или .\scripts\windows\lint.ps1
# Запустить тесты
./scripts/linux/test.sh # или .\scripts\windows\test.ps1
# Запустить миграции
./scripts/linux/migrate.sh # или .\scripts\windows\migrate.ps1
# Запустить бота
./scripts/linux/run.sh # или .\scripts\windows\run.ps1- Все скрипты автоматически определяют корневую директорию проекта
- Скрипты работают из любого места в проекте
- Python скрипты могут быть запущены напрямую или как модули
- Shell/PowerShell скрипты являются тонкими обертками, которые передают аргументы дальше
- Все скрипты используют относительные пути и являются портативными