import argparse import logging import sys from pathlib import Path from core.player import CorePlayer logger = logging.getLogger(__name__) def path_type(value: str) -> Path: file_path = Path(value) if not file_path.is_file(): raise argparse.ArgumentTypeError(f"file does not exist: {value}") return file_path def parse_args() -> argparse.Namespace: """ Setup and parse command line arguments. :return: parsed arguments """ parser = argparse.ArgumentParser( description="core player runs files that can move nodes and send commands", formatter_class=argparse.ArgumentDefaultsHelpFormatter, ) parser.add_argument( "-f", "--file", required=True, type=path_type, help="core file to play" ) parser.add_argument( "-s", "--session", type=int, help="session to play to, first found session otherwise", ) return parser.parse_args() def main() -> None: logging.basicConfig(level=logging.INFO) args = parse_args() player = CorePlayer(args.file) result = player.init(args.session) if not result: sys.exit(1) player.start() if __name__ == "__main__": main()