#!python

import argparse
import logging
import sys

from gcloud_tasks_emulator.server import create_server, DEFAULT_TARGET_PORT

# Random, apparently not often used
DEFAULT_PORT = 9022


def main(host, port, target_port, default_queue_name):
    server = create_server(host, port, target_port, default_queue_name)
    return server.run()


if __name__ == '__main__':
    print("Starting Cloud Tasks Emulator")

    parser = argparse.ArgumentParser(description='Google Cloud Task Emulator')
    subparsers = parser.add_subparsers(title='subcommands', dest="subcommand")

    start = subparsers.add_parser('start', help='start the emulator')
    start.add_argument(
        "-p", "--port",
        type=int, help='the port to run the server on', default=DEFAULT_PORT
    )

    start.add_argument(
        "-t", "--target-port",
        type=int, help='the port to which the task runner will POST requests to',
        default=DEFAULT_TARGET_PORT,
    )

    start.add_argument("-q", "--quiet", action="store_true", default=False)

    start.add_argument(
        "-d", "--default-queue", type=int,
        help="If specified will create a queue with the passed name. "
        "Name should be in the format of projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID"
    )

    args = parser.parse_args()
    if args.subcommand != "start":
        parser.print_usage()
        sys.exit(1)

    root = logging.getLogger()
    root.addHandler(logging.StreamHandler())

    if args.quiet:
        root.setLevel(logging.ERROR)
    else:
        root.setLevel(logging.INFO)

    sys.exit(main("localhost", args.port, args.target_port, args.default_queue))
