#!/usr/bin/env python3
import argparse
import json
import struct
import zlib
from pathlib import Path

import bson


def parse_args() -> argparse.Namespace:
    parser = argparse.ArgumentParser()
    parser.add_argument("path", type=Path)
    return parser.parse_args()


def main() -> None:
    args = parse_args()
    with args.path.open("rb") as handle:
        magic = handle.read(4)
        version, compressed_size, uncompressed_size = struct.unpack(
            "III", handle.read(12)
        )
        data = bson.loads(zlib.decompress(handle.read(uncompressed_size)))
        print(json.dumps(data, indent=4))


if __name__ == "__main__":
    main()
