#!/usr/bin/env python3
"""
VirtualNumber Pro – entry point.

Modes:
  python main.py bot          # Run Telegram bot (polling)
  python main.py web          # Run Flask admin (dev server)
  python main.py initdb       # Create tables + super admin
"""
from __future__ import annotations

import sys
import logging
from pathlib import Path

# Ensure project root on path
ROOT = Path(__file__).resolve().parent
if str(ROOT) not in sys.path:
    sys.path.insert(0, str(ROOT))

from core.config import config

logging.basicConfig(
    level=getattr(logging, config.LOG_LEVEL.upper(), logging.INFO),
    format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
    handlers=[
        logging.StreamHandler(),
        logging.FileHandler(config.LOG_FILE, encoding="utf-8"),
    ],
)
logger = logging.getLogger("main")

def main():
    mode = (sys.argv[1] if len(sys.argv) > 1 else "bot").lower()

    if mode == "initdb":
        from core.database import init_db
        from web.app import _ensure_super_admin
        init_db()
        _ensure_super_admin()
        print("Database initialized.")
        return

    if mode == "web":
        from web.app import create_app
        app = create_app()
        # For cPanel / passenger, application object is used; for local:
        app.run(host="0.0.0.0", port=int(sys.argv[2]) if len(sys.argv) > 2 else 5000, debug=config.DEBUG)
        return

    if mode == "bot":
        from bot.app import run_polling
        run_polling()
        return

    print(__doc__)
    sys.exit(1)

if __name__ == "__main__":
    main()
