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



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

configuracoes = obter_configuracoes(arquivo_configuracao)

if not configuracoes["acessos"]["servidorLinux"]["configurar"]:
    echo("Dados do servidor linux nao informados. Central De Cadastros nao sera configurada")
    exit(0)

if not configuracoes["centralDeCadastros"]["configurar"]:
    echo("Configuracao da Central de Cadastros desativada via configuracao")
    exit(0)


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']

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

cliente_linux.copiar_arquivo(fr'{diretorio_scripts_implantacao}\centralDeCadastros\docker-compose-central-de-cadastros.yml' , f'/home/{usuario}/centralDeCadastros/docker-compose.yml')

url_api_enterprise = "{protocolo}://{host}:{porta}".format(
    protocolo="http" if configuracoes["centralDeCadastros"]["https"] == False else "https",
    host=configuracoes["centralDeCadastros"]["hostEnterprise"],
    porta="9988"
)

url_api_rest = "{protocolo}://{host}:{porta}".format(
    protocolo="http" if configuracoes["servicos"]["rest"]["configurarHttps"] == False else "https",
    host=configuracoes["enderecos"]["ipHost"],
    porta=configuracoes["servicos"]["rest"]["porta"]
)

versao = configuracoes["centralDeCadastros"]["versao"]
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)



cliente_linux.executar_comando(fr"sed -i 's,\$URL_API_ENTERPRISE,{url_api_enterprise},g' /home/{usuario}/centralDeCadastros/docker-compose.yml")
cliente_linux.executar_comando(fr"sed -i 's,\$URL_API_REST,{url_api_rest},g' /home/{usuario}/centralDeCadastros/docker-compose.yml")

cliente_linux.executar_comando(fr"sed -i 's,\$VERSAO,{versao},g' /home/{usuario}/centralDeCadastros/docker-compose.yml")
cliente_linux.executar_comando(f'docker compose -f /home/{usuario}/centralDeCadastros/docker-compose.yml down')    
cliente_linux.executar_comando(f'docker compose -f /home/{usuario}/centralDeCadastros/docker-compose.yml pull')    
cliente_linux.executar_comando(f'docker compose -f /home/{usuario}/centralDeCadastros/docker-compose.yml up -d')    

exit(0)