v0.1 - макет интерфейса, аутентификация через логин, аккаунт админа, создание партии в 2 этапа, базовые настройки профиля и группы, переключение между группами, статистика
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env pwsh
|
||||
# ╔═══════════════════════════════════════════════════════════════════════════╗
|
||||
# ║ Единый лаунчер dev / test. Что запускать — решает APP_ENV из корневого .env ║
|
||||
# ╚═══════════════════════════════════════════════════════════════════════════╝
|
||||
# development → uvicorn --reload (бэк) + vite (фронт), нативно, в двух окнах
|
||||
# test → docker compose прод-клон (порт 8080)
|
||||
# production → лаунчером НЕ запускается (прод обособлен: docker compose up -d на Pi)
|
||||
#
|
||||
# Запуск: .\run.ps1
|
||||
# Если ругается на политику: Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
|
||||
$ErrorActionPreference = "Stop"
|
||||
$root = $PSScriptRoot
|
||||
|
||||
$envFile = Join-Path $root ".env"
|
||||
if (-not (Test-Path $envFile)) {
|
||||
Write-Host "Нет .env в корне. Скопируйте: Copy-Item .env.example .env" -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Читаем APP_ENV из .env (последнее присвоение побеждает).
|
||||
$appEnv = "development"
|
||||
foreach ($line in Get-Content $envFile) {
|
||||
if ($line -match '^\s*APP_ENV\s*=\s*([^#\s]+)') { $appEnv = $matches[1].Trim().ToLower() }
|
||||
}
|
||||
Write-Host "APP_ENV = $appEnv" -ForegroundColor Cyan
|
||||
|
||||
switch ($appEnv) {
|
||||
"development" {
|
||||
$backend = Join-Path $root "backend"
|
||||
$frontend = Join-Path $root "frontend"
|
||||
$py = Join-Path $backend ".venv\Scripts\python.exe"
|
||||
if (-not (Test-Path $py)) {
|
||||
Write-Host "Нет venv: $py" -ForegroundColor Red
|
||||
Write-Host "Сначала: cd backend; python -m venv .venv; .\.venv\Scripts\Activate.ps1; pip install -e `".[dev]`"" -ForegroundColor Yellow
|
||||
exit 1
|
||||
}
|
||||
if (-not (Test-Path (Join-Path $frontend "node_modules"))) {
|
||||
Write-Host "Нет node_modules. Сначала: cd frontend; npm install" -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
Write-Host "Запуск бэка (uvicorn --reload) и фронта (vite) в отдельных окнах…" -ForegroundColor Green
|
||||
Start-Process powershell -ArgumentList @(
|
||||
"-NoExit", "-Command",
|
||||
"Set-Location '$backend'; & '$py' -m uvicorn app.main:app --reload"
|
||||
)
|
||||
Start-Process powershell -ArgumentList @(
|
||||
"-NoExit", "-Command",
|
||||
"Set-Location '$frontend'; npm run dev"
|
||||
)
|
||||
Write-Host ""
|
||||
Write-Host " Бэк: http://127.0.0.1:8000 (Swagger: /api/docs)" -ForegroundColor Green
|
||||
Write-Host " Фронт: http://127.0.0.1:5173" -ForegroundColor Green
|
||||
}
|
||||
"test" {
|
||||
$compose = Join-Path $root "docker-compose.test.yml"
|
||||
Write-Host "Сборка и запуск прод-клона в Docker (порт 8080)…" -ForegroundColor Green
|
||||
docker compose -f $compose up --build -d
|
||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
||||
Write-Host ""
|
||||
Write-Host " Открыть: http://localhost:8080 (Swagger: /api/docs)" -ForegroundColor Green
|
||||
Write-Host " Логи: docker compose -f docker-compose.test.yml logs -f"
|
||||
Write-Host " Стоп: docker compose -f docker-compose.test.yml down -v"
|
||||
}
|
||||
"production" {
|
||||
Write-Host "production лаунчером не запускается — прод обособлен." -ForegroundColor Yellow
|
||||
Write-Host "Деплой на Pi (из ветки main): docker compose up -d --build"
|
||||
exit 1
|
||||
}
|
||||
default {
|
||||
Write-Host "Неизвестный APP_ENV='$appEnv'. Допустимо: development | test | production." -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user