1
0
Files
BasaltMeter/BasaltTrainer/cli.py

59 lines
2.8 KiB
Python
Raw Normal View History

2026-01-10 20:59:54 +08:00
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
)