import argparse import http.server import socketserver import sys import os import comfyrecipes.builder as builder def main() -> None: parser = argparse.ArgumentParser() subparsers = parser.add_subparsers(required=True, dest="subcommand") parser_build = subparsers.add_parser("build") parser_build.add_argument("directory", type=str) parser_serve = subparsers.add_parser("serve") parser_serve.add_argument("directory", type=str) parser_serve.add_argument("--port", type=int, default=8000) parser_serve.add_argument("--address", type=str, default="127.0.0.1") args = parser.parse_args() ret = 0 if args.subcommand == "build": ret = builder.Builder().build(args.directory) elif args.subcommand == "serve": os.chdir(f"{args.directory}/out/html") httpd = socketserver.TCPServer( (args.address, args.port), http.server.SimpleHTTPRequestHandler ) print(f"serving at http://{args.address}:{args.port}") try: httpd.serve_forever() except KeyboardInterrupt: pass else: # unhandled, but valid subcommand assert False sys.exit(ret) if __name__ == "__main__": main()