Files
mortgage-simulator/dev.py
T
Mateusz Gruszczyński 3ab205b769 first commit
2026-06-03 12:36:51 +02:00

60 lines
1.8 KiB
Python

#!/usr/bin/env python3
from __future__ import annotations
import argparse
import os
import subprocess
import sys
from pathlib import Path
ROOT_DIR = Path(__file__).resolve().parent
REQUIREMENTS = ROOT_DIR / "requirements.txt"
EXPORT_DIR = ROOT_DIR / "exports"
def install_requirements() -> None:
if not REQUIREMENTS.exists():
raise SystemExit("Brak pliku requirements.txt")
subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", str(REQUIREMENTS)])
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description="Lokalne uruchamianie symulatora kredytu bez Dockera.")
parser.add_argument("--host", default="127.0.0.1", help="Adres hosta, domyślnie 127.0.0.1")
parser.add_argument("--port", type=int, default=8047, help="Port, domyślnie 8047")
parser.add_argument("--no-reload", action="store_true", help="Wyłącz auto-reload podczas developmentu")
parser.add_argument("--install", action="store_true", help="Zainstaluj zależności z requirements.txt przed startem")
return parser.parse_args()
def main() -> None:
args = parse_args()
os.chdir(ROOT_DIR)
EXPORT_DIR.mkdir(parents=True, exist_ok=True)
os.environ.setdefault("MORTGAGE_EXPORT_DIR", str(EXPORT_DIR))
if args.install:
install_requirements()
try:
import uvicorn
except ModuleNotFoundError:
print("Brak zależności. Uruchom:")
print(" python dev.py --install")
print("albo:")
print(" python -m pip install -r requirements.txt")
raise SystemExit(1)
print(f"Start: http://{args.host}:{args.port}")
uvicorn.run(
"app.main:app",
host=args.host,
port=args.port,
reload=not args.no_reload,
app_dir=str(ROOT_DIR),
)
if __name__ == "__main__":
main()