import json import sys from cli.parse_args import parse_args def main() -> int: args = parse_args() try: if args.cmd == "hash": from modes.hash_mode import HashMode runner = HashMode() result = runner.run( variant=args.variant, message=args.message, salt=args.salt, bytes=args.bytes, ) elif args.cmd == "avalanche": from modes.test_avalanche import AvalancheTest runner = AvalancheTest() result = runner.run( variant=args.variant, message=args.message, salt=args.salt, bytes=args.bytes, ) elif args.cmd == "collisions": from modes.test_collisions import CollisionsTest runner = CollisionsTest() result = runner.run( variant=args.variant, max_len=args.max_len, alphabet=args.alphabet, bytes=args.bytes, ) elif args.cmd == "analyze": from modes.analyze_uniformity import UniformityAnalyzer runner = UniformityAnalyzer() result = runner.run( variant=args.variant, count=args.count, buckets=args.buckets, ) else: raise RuntimeError(f"Неизвестная команда: {args.cmd}") # Печать результата if result is not None: if isinstance(result, (dict, list)): print(json.dumps(result, ensure_ascii=False, indent=2)) else: print(result) return 0 except Exception as exc: print(f"Ошибка: {exc}", file=sys.stderr) return 1 if __name__ == "__main__": main()