#!/usr/bin/env python
import os
import sys
import argparse
import inspect

exec_dir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
app_dir = os.path.dirname(exec_dir)
sys.path.insert(0, app_dir)

from vbet.core import settings


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('-a', required=True, choices=settings.API_BACKENDS, help=f'Select an api backend to '
                                                                                 f'initialize. Default'
                                                                                 f' {settings.DEFAULT_API_NAME}')
    parser.add_argument('-p', '--port', default=settings.WS_PORT, type=int, help=f'WS server port higher than 1000 for '
                                                                                 f'api '
                                                                                  f'connection. Default {settings.WS_PORT}')
    parser.add_argument('-d', action='store_true', help=f'Set the asyncio event loop debug to true or false. Default '
                                                        f'{settings.LOOP_DEBUG}')
    parser.add_argument('-v', action='count', default=0, help=f'Set the Verbose level with highest -vv. Default -v')
    args = parser.parse_args(sys.argv[1:])
    settings.API_NAME = args.a
    settings.WS_PORT = args.port
    settings.LOOP_DEBUG = args.d
    verbose = args.v
    if verbose == 0:
        settings.LOG_LEVEL = 'INFO'
        settings.FILE_LOG_LEVEL = 'INFO'
    elif verbose == 1:
        settings.LOG_LEVEL = 'INFO'
        settings.FILE_LOG_LEVEL = 'DEBUG'
    else:
        settings.LOG_LEVEL = 'DEBUG'
        settings.FILE_LOG_LEVEL = 'DEBUG'
    settings.setup()

    import vbet.utils.logger
    from vbet.core.app import Vbet

    app = Vbet()
    app.run()
