'''Command line interface'''

import argparse
import logging
from typing import List, Union
from px_device_identity.device.config import CONFIG_DIR, KEY_DIR

from .config import PORT, HOST

log = logging.getLogger(__name__)


def get_cl_arguments(args: Union[List, None] = None):
    '''
    Build command line interface and parse input
    '''
    parser = argparse.ArgumentParser()
    parser.add_argument("-p", "--port", type=int, default=PORT)
    parser.add_argument("-ho", "--host", type=str, default=HOST)
    parser.add_argument("-kd", "--key-dir", type=str, default=KEY_DIR)
    parser.add_argument("-cd", "--config-dir", type=str, default=CONFIG_DIR)
    parser.add_argument("-d", "--debug", type=bool, default=False,
                        help="Turn on debug messages"
                        )
    
    args = parser.parse_args()

    return {
        "port": args.port,
        "host": args.host,
        "key_dir": args.key_dir,
        "config_dir": args.config_dir,
        "debug": args.debug,
    }