#! /usr/bin/env python
# -*- encoding: utf-8; py-indent-offset: 4 -*-

# Author: Sebastian Mark
# CC-BY-SA (https://creativecommons.org/licenses/by-sa/4.0/deed.de)
# for civil use only

import os
import sys

from dateutil.parser import parse

import yaml


def kubectl(cmd: str) -> str:
    cmd = f"kubectl -n argocd {cmd}"
    return os.popen(cmd).read()


def get_history(appname: str) -> dict:
    app = kubectl(f"get applications {appname} -o yaml")
    app_dict = yaml.safe_load(app)
    revisions = {}
    if app_dict:
        for rev in app_dict["status"]["history"]:
            revisions[rev["deployedAt"]] = rev["revision"]
    return revisions


def main():
    try:
        appname = sys.argv[1]
    except IndexError:
        print("Usage: get_app_history.py <application name>", file=sys.stderr)
        sys.exit(1)

    history = get_history(appname)
    if len(history):
        print(f"History for {appname}")
        for k, v in history.items():
            date = parse(k).strftime("%Y-%m-%d %H:%M:%S")
            print(f"{date}: {v}")


if __name__ == "__main__":
    main()