from __future__ import annotations import argparse import logging from .config import Settings from .worker import Worker def main() -> None: parser = argparse.ArgumentParser(description="LAI issue-driven coding worker") parser.add_argument( "command", choices=("worker", "once", "check", "preflight"), nargs="?", default="worker", ) parser.add_argument("--log-level", default="INFO") arguments = parser.parse_args() logging.basicConfig( level=getattr(logging, arguments.log_level.upper(), logging.INFO), format="%(asctime)s %(levelname)s %(name)s: %(message)s", ) settings = Settings.from_env() if arguments.command == "check": logging.getLogger(__name__).info("Configuration is valid") return worker = Worker.create(settings) if arguments.command == "preflight": worker.preflight() elif arguments.command == "once": worker.run_once() else: worker.run_forever() if __name__ == "__main__": main()