diff --git a/BasaltTrainer/cli.py b/BasaltTrainer/cli.py new file mode 100644 index 0000000..386d2ce --- /dev/null +++ b/BasaltTrainer/cli.py @@ -0,0 +1,58 @@ +import argparse +from dataclasses import dataclass +from pathlib import Path + +@dataclass +class Opts: + presenter_path: Path + headless: bool + width: int + height: int + pr_engine_name: str + pr_engine_device: int + pr_deliver_name: str + pr_deliver_device: int + pr_object_loader_name: str + pr_object_loader_file: str + pr_anime_loader_name: str + pr_anime_loader_file: str + tr_deliver_name: str + tr_deliver_device: int + tr_load_name: str + +def parse() -> Opts: + parser = argparse.ArgumentParser("BasaltTrainer") + parser.add_argument('--presenter-path', type=Path, required=True, help='Path to Presenter executable') + parser.add_argument('--headless', action='store_true', help='Run Presenter in headless mode') + parser.add_argument('--width', type=int, required=True, default=600, help='Presenter window width') + parser.add_argument('--height', type=int, required=True, default=600, help='Presenter window height') + parser.add_argument('--pr-engine-name', type=str, required=True, help='Presenter render engine name') + parser.add_argument('--pr-engine-device', type=int, required=True, help='Presenter render engine device ID') + parser.add_argument('--pr-deliver-name', type=str, required=True, help='Presenter data deliver name') + parser.add_argument('--pr-deliver-device', type=int, required=True, help='Presenter data deliver device ID') + parser.add_argument('--pr-object-loader-name', type=str, required=True, help='Presenter object loader name') + parser.add_argument('--pr-object-loader-file', type=str, required=True, help='Presenter object loader file path') + parser.add_argument('--pr-anime-loader-name', type=str, required=True, help='Presenter anime loader name') + parser.add_argument('--pr-anime-loader-file', type=str, required=True, help='Presenter anime file path') + parser.add_argument('--tr-deliver-name', type=str, required=True, help='Trainer data deliver name') + parser.add_argument('--tr-deliver-device', type=int, required=True, help='Trainer data deliver device ID') + parser.add_argument('--tr-load-name', type=str, required=True, help='Trainer load name') + + args = parser.parse_args() + return Opts( + presenter_path=args.presenter_path, + headless=args.headless, + width=args.width, + height=args.height, + pr_engine_name=args.pr_engine_name, + pr_engine_device=args.pr_engine_device, + pr_deliver_name=args.pr_deliver_name, + pr_deliver_device=args.pr_deliver_device, + pr_object_loader_name=args.pr_object_loader_name, + pr_object_loader_file=args.pr_object_loader_file, + pr_anime_loader_name=args.pr_anime_loader_name, + pr_anime_loader_file=args.pr_anime_loader_file, + tr_deliver_name=args.tr_deliver_name, + tr_deliver_device=args.tr_deliver_device, + tr_load_name=args.tr_load_name + ) diff --git a/BasaltTrainer/main.py b/BasaltTrainer/main.py index 5559d61..7fe0e0c 100644 --- a/BasaltTrainer/main.py +++ b/BasaltTrainer/main.py @@ -1,15 +1,17 @@ from cmd_server import CmdServer, HandshakePayload, PixelKind from while_stopper import INSTANCE as STOPPER +import cli import logging - def receive_data() -> None: logging.info("Data received") def main(): - server = CmdServer() + # parse argument + opts = cli.parse() + server = CmdServer() print("Please launch BasaltPresenter now.") print("Then press Enter to continue...") input()