57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
|
|
#!/usr/bin/env python3
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import argparse
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
from rt3_rekitlib import (
|
||
|
|
PENDING_TEMPLATE_STORE_DEFAULT_SEEDS,
|
||
|
|
export_pending_template_store,
|
||
|
|
parse_hex,
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def build_parser() -> argparse.ArgumentParser:
|
||
|
|
parser = argparse.ArgumentParser(
|
||
|
|
description="RT3 CLI RE kit for repeatable branch-deepening exports."
|
||
|
|
)
|
||
|
|
subparsers = parser.add_subparsers(dest="command", required=True)
|
||
|
|
|
||
|
|
pending = subparsers.add_parser(
|
||
|
|
"pending-template-store",
|
||
|
|
help="Export the pending-template dispatch-store dossier.",
|
||
|
|
)
|
||
|
|
pending.add_argument("exe_path", type=Path)
|
||
|
|
pending.add_argument("output_dir", type=Path)
|
||
|
|
pending.add_argument(
|
||
|
|
"--seed-addr",
|
||
|
|
action="append",
|
||
|
|
default=[],
|
||
|
|
help="Hex seed address. May be repeated.",
|
||
|
|
)
|
||
|
|
return parser
|
||
|
|
|
||
|
|
|
||
|
|
def main() -> int:
|
||
|
|
parser = build_parser()
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
if args.command == "pending-template-store":
|
||
|
|
seed_addresses = (
|
||
|
|
[parse_hex(value) for value in args.seed_addr]
|
||
|
|
if args.seed_addr
|
||
|
|
else list(PENDING_TEMPLATE_STORE_DEFAULT_SEEDS)
|
||
|
|
)
|
||
|
|
export_pending_template_store(
|
||
|
|
args.exe_path.resolve(),
|
||
|
|
args.output_dir.resolve(),
|
||
|
|
seed_addresses,
|
||
|
|
)
|
||
|
|
return 0
|
||
|
|
|
||
|
|
parser.error(f"unknown command: {args.command}")
|
||
|
|
return 2
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
raise SystemExit(main())
|