#!/usr/bin/env python
# encoding: utf-8

# This import _must_ be first
import _fipscustomize # noqa: F401, isort:skip

import argparse
import json
import os

from twisted.internet import task

from duoauthproxy.lib import config_provider, path_util, version_history


def print_json(o):
    print(json.dumps(o, indent=4))


async def check_for_updates(args):
    configuration = config_provider.get_config()
    try:
        result = await version_history.get_version_information(configuration)
    except version_history.UnableFetchVersionInfo as e:
        print_json(
            {
                "success": False,
                "error": str(e),
            }
        )
    else:
        print_json(
            {
                "success": True,
                "versionInfo": result,
            }
        )


COMMAND_CALLS = {"check-for-updates": check_for_updates}


@task.react
async def main(_reactor):
    os.chdir(path_util.get_home_dir())
    parser = argparse.ArgumentParser()
    parser.add_argument("command")
    args = parser.parse_args()

    await COMMAND_CALLS[args.command](args)
    return "Done"
