#!/usr/bin/env python3


from stop import stop

from utils.settings import BASE_DIR, load_config
from utils.functions import exec_in_xmldb, run
from pathlib import Path
import subprocess
import shlex
import os
import shutil
from time import sleep

XMLDB_WAIT_TIME=20

def init_xml_db( config ):

    try:
        subprocess.check_call(
            shlex.split( "docker-compose up -d xmldb" ),
        )

        print( "wait {}s for the xml database to get ready... :-P".format( XMLDB_WAIT_TIME ) )
        sleep( XMLDB_WAIT_TIME )

        exec_in_xmldb(
            "--recurse-dirs",
            "--parse", "{RES_DIR_IN_CONTAINER}/xml".format(
                RES_DIR_IN_CONTAINER = config['RES_DIR_IN_CONTAINER']
            )
        )

    except:
        subprocess.check_call(
            shlex.split( "docker-compose down" ),
        )

def copy_dir(src, dst):
    print( "'{}' -> '{}'".format( src, dst ) )
    if Path(dst).exists():
        shutil.rmtree(
            dst
        )
    shutil.copytree(
            src=src,
            dst=dst
    )

if __name__ == '__main__':

    from argparse import ArgumentParser

    config = load_config()

    parser = ArgumentParser(
        description="run the webserver"
    )
    parser.add_argument(
        "--build",
        action = "store_true"
    )
    parser.add_argument(
        "CMD",
        nargs="*"
    )
    args = parser.parse_args()

    stop(
            env = config
    )

    CMD= vars(args)['CMD']
    run(
        env=config,
        build = args.build,
        cmd=CMD
    )

    init_xml_db( config )