Ctrl K
ComunidadGuías…

start.bat

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
@echo off
:: ──────────────────────────────────────────────
:: Spendify — Startup script (Windows)
:: ──────────────────────────────────────────────
setlocal enabledelayedexpansion
cd /d "%~dp0"

:: ── Pre-flight checks ──────────────────────────

:: Python 3.13+
where python >nul 2>&1
if errorlevel 1 (
    echo [ERROR] Python non trovato. Installa Python ^>= 3.13.
    exit /b 1
)
for /f "tokens=*" %%v in ('python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')"') do set PY_VER=%%v
for /f "tokens=1,2 delims=." %%a in ("%PY_VER%") do (
    set PY_MAJOR=%%a
    set PY_MINOR=%%b
)
if %PY_MAJOR% lss 3 (
    echo [ERROR] Python ^>= 3.13 richiesto ^(trovato %PY_VER%^).
    exit /b 1
)
if %PY_MAJOR% equ 3 if %PY_MINOR% lss 13 (
    echo [ERROR] Python ^>= 3.13 richiesto ^(trovato %PY_VER%^).
    exit /b 1
)
echo [INFO]  Python %PY_VER% OK

:: uv
where uv >nul 2>&1
if errorlevel 1 (
    echo [WARN]  uv non trovato. Installazione in corso...
    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
    where uv >nul 2>&1
    if errorlevel 1 (
        echo [ERROR] Installazione di uv fallita. Installa manualmente: https://docs.astral.sh/uv/
        exit /b 1
    )
)
echo [INFO]  uv OK

:: ── Setup ───────────────────────────────────────

:: .env
if not exist .env (
    if exist .env.example (
        copy .env.example .env >nul
        echo [INFO]  File .env creato da .env.example
    ) else (
        echo [WARN]  File .env.example non trovato — procedo senza .env
    )
)

:: Dipendenze
echo [INFO]  Sincronizzazione dipendenze...
uv sync --quiet

:: Attivazione virtualenv
if not exist ".venv\Scripts\activate.bat" (
    echo [ERROR] Virtualenv non trovato in .venv. Esegui 'uv sync' manualmente.
    exit /b 1
)
call .venv\Scripts\activate.bat
echo [INFO]  Virtualenv attivato (.venv)

:: ── Avvio ───────────────────────────────────────

set MODE=%~1
if "%MODE%"=="" set MODE=ui

if "%MODE%"=="ui" (
    echo [INFO]  Avvio Streamlit UI su http://localhost:8501
    streamlit run app.py --server.headless true
    goto :eof
)

if "%MODE%"=="api" (
    echo [INFO]  Avvio API server su http://localhost:8000
    uvicorn api.main:app --host 0.0.0.0 --port 8000
    goto :eof
)

if "%MODE%"=="all" (
    echo [INFO]  Avvio UI + API...
    start "Spendify-API" cmd /c "call .venv\Scripts\activate.bat && uvicorn api.main:app --host 0.0.0.0 --port 8000"
    echo [INFO]  API avviata su http://localhost:8000
    echo [INFO]  Avvio Streamlit UI su http://localhost:8501
    streamlit run app.py --server.headless true
    goto :eof
)

echo Uso: %~nx0 [ui^|api^|all]
echo   ui   — Solo interfaccia Streamlit (default)
echo   api  — Solo server API REST
echo   all  — Entrambi
exit /b 1