#!/usr/bin/env python3
# PYTHON_ARGCOMPLETE_OK

import ioex
import os
import sched
import sys
import threading
import time
import tooncher
import yaml

invasions_progress = ioex.AutoDict()


def update_invasions():

    for progress in tooncher.request_active_invasions().values():
        invasions_progress[progress.district][progress.date] = progress
        print('{} {:^24} {:^16} {} remaining'.format(
            progress.date.strftime('%H:%M:%S'),
            progress.district,
            progress.cog_type,
            progress.remaining_number,
        ))


def update_loop(update_interval_seconds):

    try:
        while True:
            update_invasions()
            time.sleep(update_interval_seconds)
    except KeyboardInterrupt:
        pass


def run(update_interval_seconds, validate_ssl_certs):

    # if os.path.exists(config_path):
    #     with open(config_path) as f:
    #         config = yaml.load(f.read())
    # else:
    #     config = {}

    update_thread = threading.Thread(
        target=lambda: update_loop(update_interval_seconds),
    )
    update_thread.start()

def _init_argparser():

    import argparse
    argparser = argparse.ArgumentParser(description=None)
    # argparser.add_argument(
    #     '--config',
    #     '-c',
    #     metavar='path',
    #     dest='config_path',
    #     help='path to config file (default: %(default)s)',
    #     default=os.path.join(os.path.expanduser('~'), '.tooncher'),
    # ) argparser.add_argument( '--no-ssl-cert-validation',
        '-k',
        dest='validate_ssl_certs',
        help='do not validate ssl certificates',
        action='store_false',
    )
    argparser.add_argument(
        '--update-interval',
        '-t',
        metavar='seconds',
        dest='update_interval_seconds',
        help='(default: %(default)ss)',
        default=30,
    )
    return argparser


def main(argv):

    argparser = _init_argparser()
    try:
        import argcomplete
        argcomplete.autocomplete(argparser)
    except ImportError:
        pass
    args = argparser.parse_args(argv)

    run(**vars(args))

    return 0

if __name__ == "__main__":
    sys.exit(main(sys.argv[1:]))
