import os import time import json import argparse from vs_types import BookerStandaloneConfig from gco_wrapper import GCOWrapper from logger_setup import setup_app_logger from booker_standalone import BookerStandalone def load_config(path: str): if not os.path.exists(path): return {} with open(path, "r", encoding="utf-8") as f: return json.load(f) def main(): parser = argparse.ArgumentParser(description="Standalone Booker Runner") parser.add_argument( "-c", "--config", type=str, required=False, default="config/config.json", help="Path to standalone booker config.json" ) args = parser.parse_args() config_path = args.config app_logger = setup_app_logger("Booker") app_logger.info("Booker Logger is ready! All VSC macros are hooked.") cfg_data = load_config(config_path) redis_conf = cfg_data.get('redis') booker_standalone_config = cfg_data.get('booker_standalone_config') cfg = BookerStandaloneConfig.from_json(booker_standalone_config) gco_class = BookerStandalone wrapper = GCOWrapper(gco_class=gco_class, gco_cfg=cfg, redis_conf=redis_conf) wrapper.load() wrapper.start() app_logger.info(f"Successfully started booker. Press Ctrl+C to stop.") try: while True: time.sleep(1) except KeyboardInterrupt: app_logger.info("Shutting down Bookers...") wrapper.stop() if __name__ == "__main__": main()