Initial commit
This commit is contained in:
68
run.py
Normal file
68
run.py
Normal file
@@ -0,0 +1,68 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import os
|
||||
|
||||
from app import create_app
|
||||
from models import db
|
||||
from sockets import socketio, start_event_monitor
|
||||
from udp_listener import start_udp_listener
|
||||
|
||||
|
||||
def _ensure_sqlite_schema(app) -> None:
|
||||
"""Very small schema migration helper for SQLite dev deployments."""
|
||||
uri: str = app.config.get("SQLALCHEMY_DATABASE_URI", "")
|
||||
if not uri.startswith("sqlite:"):
|
||||
return
|
||||
import sqlite3
|
||||
|
||||
path = uri.split("///", 1)[-1]
|
||||
try:
|
||||
conn = sqlite3.connect(path)
|
||||
# Global settings table (used for e.g. idle fallback image)
|
||||
conn.execute(
|
||||
"CREATE TABLE IF NOT EXISTS app_settings ("
|
||||
"key VARCHAR(64) PRIMARY KEY, "
|
||||
"value VARCHAR(255) NOT NULL"
|
||||
")"
|
||||
)
|
||||
conn.commit()
|
||||
finally:
|
||||
try:
|
||||
conn.close()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser(description="SyncPlayer server")
|
||||
parser.add_argument("command", nargs="?", default="run", choices=["run", "init-db"], help="Command")
|
||||
parser.add_argument("--host", default=os.environ.get("HOST", "0.0.0.0"))
|
||||
parser.add_argument("--port", type=int, default=int(os.environ.get("PORT", "5000")))
|
||||
args = parser.parse_args()
|
||||
|
||||
app = create_app()
|
||||
|
||||
with app.app_context():
|
||||
db.create_all()
|
||||
_ensure_sqlite_schema(app)
|
||||
|
||||
if args.command == "init-db":
|
||||
with app.app_context():
|
||||
db.create_all()
|
||||
_ensure_sqlite_schema(app)
|
||||
print("Database initialized")
|
||||
return
|
||||
|
||||
# Start UDP listener in background
|
||||
start_udp_listener(app)
|
||||
|
||||
# Monitor trigger expiry (clears in-memory state when end_time passes)
|
||||
start_event_monitor(app)
|
||||
|
||||
# Prefer gevent on Windows/Python 3.14+. (eventlet is not compatible there)
|
||||
socketio.run(app, host=args.host, port=args.port)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user