pyinfra/scripts/show_compressed_json.py
2022-07-06 17:40:35 +02:00

38 lines
843 B
Python

import argparse
import gzip
import json
from funcy import lmap
from pyinfra.server.packing import string_to_bytes
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("compressed_json_path", help="Path to compressed JSON file")
return parser.parse_args()
def interpret(parsed):
try:
return {**parsed, "data": str(string_to_bytes(parsed["data"]))}
except KeyError:
return parsed
def main(fp):
with open(fp, "rb") as f:
compressed_json_path = f.read()
json_str = gzip.decompress(compressed_json_path)
parsed = json.loads(json_str)
parsed = [parsed] if isinstance(parsed, dict) else parsed
parsed = lmap(interpret, parsed)
print(json.dumps(parsed, indent=2))
if __name__ == "__main__":
args = parse_args()
main(args.compressed_json_path)