#!/usr/bin/python3

import argparse
import sys
import gi

gi.require_version("OSTree", "1.0")

from gi.repository import GLib
from gi.repository import OSTree

STATIC_DELTA_META_ENTRY_FORMAT = "(uayttay)"
STATIC_DELTA_FALLBACK_FORMAT = "(yaytt)"
STATIC_DELTA_SUPERBLOCK_FORMAT =  f"(a{{sv}}tayay{OSTree.COMMIT_GVARIANT_STRING}aya{STATIC_DELTA_META_ENTRY_FORMAT}a{STATIC_DELTA_FALLBACK_FORMAT})"

parser = argparse.ArgumentParser(description="Show static delta info")
parser.add_argument("deltafile", type=str, help="The delta file")
parser.add_argument("--from", default=False, action="store_true", dest="frm")
parser.add_argument("--to", default=False, action="store_true")
args = parser.parse_args(sys.argv[1:])

m = GLib.MappedFile.new(args.deltafile, False)

v = GLib.Variant.new_from_bytes(GLib.VariantType(STATIC_DELTA_SUPERBLOCK_FORMAT), m.get_bytes(), True)

if args.frm:
    frm = v.get_child_value(2)
    if len(frm) == 0:
        print("None")
    else:
        print(OSTree.checksum_from_bytes_v(frm))

if args.to:
    print(OSTree.checksum_from_bytes_v(v.get_child_value(3)))
