#!/usr/bin/env python3
# PYTHON_ARGCOMPLETE_OK

import os
import sys
import tooncher
import yaml

def run(username, config_path, engine_path = None):

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

    if engine_path is None:
        engine_path = config['engine_path'] if 'engine_path' in config else None
    if engine_path is None:
        raise Exception('missing path to toontown engine')

    accounts = config['accounts'] if 'accounts' in config else []

    for account in accounts:
        if account['username'] == username:
            tooncher.launch(
                engine_path = engine_path,
                username = account['username'],
                password = account['password'],
                )

def _init_argparser():

    import argparse
    argparser = argparse.ArgumentParser(description = None)
    argparser.add_argument('username')
    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'),
        )
    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:]))