MrPatoVera's picture
Deploy BORDER Protocol v0.1 on free ZeroGPU
526bfa8 verified
Raw History Blame Contribute Delete
1.18 kB
"""CLI for deterministic single scenarios or the local regression suite."""
import argparse
import json
from pathlib import Path
from .simulator import compare, list_scenarios, load_manifest_text, load_scenario, run_suite
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('--scenario', choices=list_scenarios(), default='stale_flight')
parser.add_argument('--suite', action='store_true')
parser.add_argument('--manifest', type=Path)
parser.add_argument('--no-recovery', action='store_true')
parser.add_argument('--output', type=Path)
args = parser.parse_args()
text = args.manifest.read_text() if args.manifest else load_manifest_text()
result = (run_suite(text, not args.no_recovery) if args.suite else
compare(load_scenario(args.scenario), text, not args.no_recovery))
output = json.dumps(result, indent=2, ensure_ascii=False, allow_nan=False) + '\n'
if args.output:
args.output.parent.mkdir(parents=True, exist_ok=True)
args.output.write_text(output)
print(f'Saved {args.output}')
else:
print(output)
if __name__ == '__main__':
main()