62 """Attach ``checkpoint export|import`` subcommands."""
64 parser.set_defaults(handler=_cmd_checkpoint_group, checkpoint_parser=parser)
65 subcommands = parser.add_subparsers(dest=
"checkpoint_command")
67 export = subcommands.add_parser(
"export", help=
"Export a JSON checkpoint.")
71 help=
"Registry SQLite path. Defaults to the discovery algorithm.",
73 export.add_argument(
"--out", required=
True, help=
"Output checkpoint JSON path.")
74 export.add_argument(
"--sign", action=
"store_true", help=
"Sign with HMAC-SHA256.")
75 export.add_argument(
"--json", action=
"store_true")
76 export.set_defaults(handler=_cmd_export)
78 import_parser = subcommands.add_parser(
"import", help=
"Import a JSON checkpoint.")
79 import_parser.add_argument(
82 help=
"Registry SQLite path. Defaults to the discovery algorithm.",
84 import_parser.add_argument(
88 help=
"Checkpoint JSON file to import.",
90 import_parser.add_argument(
91 "--skip-signature-check",
93 help=
"Allow importing an unsigned checkpoint.",
95 import_parser.add_argument(
"--json", action=
"store_true")
96 import_parser.set_defaults(handler=_cmd_import)
106 location = discover_registry_location(registry_path=args.registry)
108 result = write_checkpoint(
113 payload = result.to_dict()
115 print(json.dumps(payload, indent=2, sort_keys=
True))
117 print(f
"checkpoint exported: {result.path}")
118 print(f
"sha256: {result.sha256}")
123 location = discover_registry_location(registry_path=args.registry)
125 result = import_checkpoint(
127 checkpoint_path=Path(args.from_file),
128 skip_signature_check=args.skip_signature_check,
130 payload = result.to_dict()
132 print(json.dumps(payload, indent=2, sort_keys=
True))
134 print(f
"checkpoint imported: {result.path}")
135 print(f
"tables: {len(result.tables)}")