#!python

from lex_bot_deploy import lex_bot_deploy
import argparse
import sys
import logging
import os

logging.basicConfig(stream=sys.stdout)
logger = logging.getLogger(__name__)

parser = argparse.ArgumentParser()
parser.add_argument('--alias', required=False,
                    help='lex alias to deploy to, e.g. test or dev or qa', default='$LATEST')
parser.add_argument('--region', required=False, help='AWS region to deploy to')
parser.add_argument('--lambda-endpoint', required=False,
                    help='function ARN in the format: arn:aws:lambda:<region>:<account-id>:function:<function-name>:<function-alias>')
parser.add_argument('--verbose', required=False, help='verbose logging (>=DEBUG)', action='store_true')
parser.add_argument('--quiet', required=False, help='quiet (>=WARNING)', action='store_true')
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('-s', '--schema-file', help='schema file path')
group.add_argument('--example', help='use one of the test examples',
                   choices=["BookTrip", "OrderFlowers", "ScheduleAppointment"])

args = parser.parse_args()

schema_file = args.schema_file

region = args.region
lambda_endpoint = args.lambda_endpoint
lex_alias = args.alias
log_level = 'INFO'
if args.verbose:
    log_level = 'DEBUG'
elif args.quiet:
    log_level = 'WARNING'

if args.example:
    SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
    schema_file = os.path.join(SCRIPT_DIR, os.pardir, "lex_bot_deploy/examples/{}_Export.json".format(args.example))

try:
    lex_bot_deploy.lex_deploy(lex_schema_file=schema_file, lex_alias=lex_alias,
                              lambda_endpoint=lambda_endpoint, region=region, log_level=log_level)
except Exception as e:
    sys.exit(1)
