import sys
from lib.echo import echo
from lib.ClienteLinux import obter_cliente_linux
from lib.obter_configuracoes import obter_configuracoes
from pathlib import Path
from lib.executar_validacoes_servidor_linux import executar_validacoes_servidor_linux

arquivo_configuracao = None if len(sys.argv) < 2 else sys.argv[1]
diretorio_scripts_implantacao = r'c:\microuniversoWeb\scripts_implantacao' if len(sys.argv) < 3 else sys.argv[2]

configuracoes = obter_configuracoes(arquivo_configuracao)

if not configuracoes:
    echo(f"Falha ao carregar configuracoes do arquivo {arquivo_configuracao}" , "error")
    exit(1)

configuracoes_ecommerce = configuracoes["ecommerce"]
processamento_pedido_venda = configuracoes_ecommerce["processamentoPedidoVenda"]
processamento_assincrono = processamento_pedido_venda["assincrono"]
processamento_pedido_venda_assincrono_habilitado = processamento_assincrono["habilitado"]

configuracoes_mongodb_sites_iis = configuracoes["mongodbSitesIIS"]
configurar_mongodb_sites_iis = configuracoes_mongodb_sites_iis["configurar"]
configurar_servidor_linux = configuracoes["acessos"]["servidorLinux"]["configurar"]

if not processamento_pedido_venda_assincrono_habilitado:
    echo("Processamento de pedido de venda assincrono desativado. MongoDB Sites IIS nao sera configurado")
    exit(0)

if not configurar_mongodb_sites_iis:
    echo("MongoDB Sites IIS desativado via configuracao. MongoDB Sites IIS nao sera configurado")
    exit(0)

if not configurar_servidor_linux:
    echo("MongoDB Sites IIS marcado para configuracao, mas os dados do servidor linux nao foram informados", "error")
    exit(1)

mensagem_erro = executar_validacoes_servidor_linux(arquivo_configuracao, diretorio_scripts_implantacao)

if mensagem_erro:
    echo(mensagem_erro, "error")
    exit(1)


cliente_linux = obter_cliente_linux(arquivo_configuracao)
    

usuario = configuracoes['acessos']['servidorLinux']['usuario']  
usuario_registro_docker = configuracoes["acessos"]["registroDocker"]["usuario"]
senha_registro_docker = configuracoes["acessos"]["registroDocker"]["senha"]

cliente_linux.executar_comando(fr'docker login gitlab.microuniverso.com.br:5050 -u {usuario_registro_docker} -p {senha_registro_docker}', disparar_excecao_se_retorno_nao_zero=False)

diretorio_mongodb_sites_iis = f"/home/{usuario}/mongoDbSitesIIS"

if cliente_linux.executar_comando(f"test ! -d {diretorio_mongodb_sites_iis}", disparar_excecao_se_retorno_nao_zero=False).codigo_retorno == 0:
    cliente_linux.executar_comando(f'mkdir {diretorio_mongodb_sites_iis}')    

cliente_linux.copiar_arquivo(fr'{diretorio_scripts_implantacao}\mongoDbSitesIIS\docker-compose-mongodb-sites-iis.yml' , f'{diretorio_mongodb_sites_iis}/docker-compose.yml')

usuario_mongodb_sites_iis = configuracoes_mongodb_sites_iis["usuario"]
senha_mongodb_sites_iis = configuracoes_mongodb_sites_iis["senha"]
porta_mongodb_sites_iis = configuracoes_mongodb_sites_iis["porta"]
nome_container_mongodb_sites_iis = configuracoes_mongodb_sites_iis["nomeContainer"]

cliente_linux.executar_comando(fr"sed -i 's,\$USUARIO_MONGO,{usuario_mongodb_sites_iis},g' {diretorio_mongodb_sites_iis}/docker-compose.yml")
cliente_linux.executar_comando(fr"sed -i 's,\$SENHA_MONGO,{senha_mongodb_sites_iis},g' {diretorio_mongodb_sites_iis}/docker-compose.yml")
cliente_linux.executar_comando(fr"sed -i 's,\$PORTA_MONGO,{porta_mongodb_sites_iis},g' {diretorio_mongodb_sites_iis}/docker-compose.yml")
cliente_linux.executar_comando(fr"sed -i 's,\$NOME_CONTAINER_MONGO,{nome_container_mongodb_sites_iis},g' {diretorio_mongodb_sites_iis}/docker-compose.yml")

cliente_linux.executar_comando(fr'docker compose -f {diretorio_mongodb_sites_iis}/docker-compose.yml down')
cliente_linux.executar_comando(fr'docker compose -f {diretorio_mongodb_sites_iis}/docker-compose.yml pull')
cliente_linux.executar_comando(fr'docker compose -f {diretorio_mongodb_sites_iis}/docker-compose.yml up -d')


exit(0)
