#!/usr/bin/env python3

import argparse
import os.path
import subprocess
import sys


def main():
    parser = argparse.ArgumentParser(description="Publish Docker images")
    parser.add_argument("--image", dest="images", action="append", help="The image to be exported")
    args = parser.parse_args()

    ref = os.environ["GITHUB_REF"].split("/")

    if ref[1] != "heads":
        print("Not a branch")
        sys.exit(0)

    version = "/".join(ref[2:])

    # TODO
    if version not in os.environ.get("HELM_RELEASE_NAMES", "").split(","):
        print("Not a release branch")
        sys.exit(0)

    openshift_version = "3.11.0"
    openshift_hash = "0cbc58b"
    openshift_version_name = "openshift-origin-client-tools-v{}-{}-linux-64bit".format(
        openshift_version, openshift_hash
    )
    openshift_file = openshift_version_name + ".tar.gz"
    openshift_url = "https://github.com/openshift/origin/releases/download/v{}/{}".format(
        openshift_version, openshift_file
    )
    subprocess.check_call(["wget", "--quiet", openshift_url], cwd="/tmp")
    subprocess.check_call(["tar", "xfz", openshift_file], cwd="/tmp")
    oc = "/tmp/{}/oc".format(openshift_version_name)  # pylint: disable=invalid-name

    subprocess.check_call(
        [
            oc,
            "login",
            subprocess.check_output(
                ["gopass", "show", "gs/ci/openshift/{}/url".format(os.environ["OPENSHIFT_PROJECT"])]
            ).decode(),
            "--token="
            + subprocess.check_output(
                ["gopass", "show", "gs/ci/openshift/{}/token".format(os.environ["OPENSHIFT_PROJECT"])]
            ).decode(),
        ]
    )
    for image in args.images:
        openshift_image_ref = "{version}-c2cgeoportal-{image}:{version}".format(version=version, image=image)
        subprocess.check_call(
            [
                oc,
                "import-image",
                openshift_image_ref,
                "--scheduled=true",
                "--reference-policy=local",
                "--namespace=" + os.environ["OPENSHIFT_PROJECT"],
            ]
        )


if __name__ == "__main__":
    main()
