#!/usr/bin/python3.6 -s
# -*- encoding: utf-8 -*-

import argparse
import json
import os
import sys

import productmd.compose

here = sys.path[0]
if here != "/usr/bin":
    sys.path[0] = os.path.dirname(here)

import compose_utils


def run(opts):
    if opts.compose.endswith("rpms.json"):
        rpms = productmd.Rpms()
        rpms.load(opts.compose)
    else:
        compose = productmd.compose.Compose(opts.compose)
        rpms = compose.rpms

    listing = compose_utils.get_listing(
        rpms, variants=opts.variant, arches=opts.arch, pkg_arches=opts.pkg_arch
    )
    json.dump(listing, sys.stdout, sort_keys=True, indent=2)


DESCRIPTION = (
    "Create a product listing that can be passed to Pungi as prepopulate file."
)


if __name__ == "__main__":
    parser = argparse.ArgumentParser(description=DESCRIPTION)
    parser.add_argument(
        "compose",
        metavar="COMPOSE",
        help="path to compose that should be dumped (path to just rpms.json file is accepted as well)",
    )
    parser.add_argument(
        "--arch",
        action="append",
        default=[],
        help="only dump this arch; can be used multiple times",
    )
    parser.add_argument(
        "--variant",
        action="append",
        default=[],
        help="only dump this variant; can be used multiple times",
    )
    parser.add_argument(
        "--pkg-arch",
        action="append",
        default=[],
        help="only include packages with this arch; can be used multiple times",
    )

    opts = parser.parse_args()
    run(opts)
