""" Main entry point for Exchange Data Manager. """ import logging import sys import argparse import uvicorn from .config import Config def setup_logging(config: Config): """Configure logging based on config.""" logging.basicConfig( level=getattr(logging, config.logging.level.upper()), format=config.logging.format, ) def main(): """Main entry point.""" parser = argparse.ArgumentParser(description="Exchange Data Manager") parser.add_argument( "--config", "-c", help="Path to config file", default=None, ) parser.add_argument( "--host", help="Host to bind to", default=None, ) parser.add_argument( "--port", "-p", type=int, help="Port to bind to", default=None, ) parser.add_argument( "--reload", action="store_true", help="Enable auto-reload for development", ) args = parser.parse_args() # Load config config = Config.load(args.config) setup_logging(config) logger = logging.getLogger(__name__) logger.info("Starting Exchange Data Manager...") # Determine host and port host = args.host or config.server.host port = args.port or config.server.rest_port # Run the server uvicorn.run( "exchange_data_manager.api.rest:app", host=host, port=port, reload=args.reload, log_level=config.logging.level.lower(), ) if __name__ == "__main__": main()