main_standalone.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import os
  2. import time
  3. import json
  4. import argparse
  5. from vs_types import BookerStandaloneConfig
  6. from gco_wrapper import GCOWrapper
  7. from logger_setup import setup_app_logger
  8. from booker_standalone import BookerStandalone
  9. def load_config(path: str):
  10. if not os.path.exists(path):
  11. return {}
  12. with open(path, "r", encoding="utf-8") as f:
  13. return json.load(f)
  14. def main():
  15. parser = argparse.ArgumentParser(description="Standalone Booker Runner")
  16. parser.add_argument(
  17. "-c", "--config",
  18. type=str,
  19. required=False,
  20. default="config/config.json",
  21. help="Path to standalone booker config.json"
  22. )
  23. args = parser.parse_args()
  24. config_path = args.config
  25. app_logger = setup_app_logger("Booker")
  26. app_logger.info("Booker Logger is ready! All VSC macros are hooked.")
  27. cfg_data = load_config(config_path)
  28. redis_conf = cfg_data.get('redis')
  29. booker_standalone_config = cfg_data.get('booker_standalone_config')
  30. cfg = BookerStandaloneConfig.from_json(booker_standalone_config)
  31. gco_class = BookerStandalone
  32. wrapper = GCOWrapper(gco_class=gco_class, gco_cfg=cfg, redis_conf=redis_conf)
  33. wrapper.load()
  34. wrapper.start()
  35. app_logger.info(f"Successfully started booker. Press Ctrl+C to stop.")
  36. try:
  37. while True: time.sleep(1)
  38. except KeyboardInterrupt:
  39. app_logger.info("Shutting down Bookers...")
  40. wrapper.stop()
  41. if __name__ == "__main__":
  42. main()