import sys
from pathlib import Path

from lib.ClienteLinux import obter_cliente_linux
from lib.echo import echo
from lib.executar_validacoes_servidor_linux import executar_validacoes_servidor_linux
from lib.mu_whatsapp_api import (
    apagar_mu_whatsapp_api,
    criar_volumes_mu_whatsapp_api,
    fazer_backup_volumes_mu_whatsapp_api,
    preparar_ambiente_mu_whatsapp_api,
    restaurar_backup_volumes_mu_whatsapp_api,
    subir_mu_whatsapp_api,
)
from lib.obter_configuracoes import obter_configuracoes


arquivo_configuracao = None if len(sys.argv) < 2 else sys.argv[1]
diretorio_scripts_implantacao = str(Path(__file__).resolve().parents[1]) 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)

if not configuracoes["acessos"]["servidorLinux"]["configurar"]:
    echo("Dados do servidor linux nao informados. MuWhatsapp API nao sera recriada no modo soft")
    exit(0)

if not configuracoes["muWhatsapp"]["configurarApi"]:
    echo("Configuracao da api MuWhatsapp desativada via configuracao. O apagamento soft nao sera executado")
    exit(0)

mensagem_erro = executar_validacoes_servidor_linux(arquivo_configuracao, diretorio_scripts_implantacao)

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

fazer_backup_volumes_mu_whatsapp_api(arquivo_configuracao)

cliente_linux = obter_cliente_linux(arquivo_configuracao)
apagar_mu_whatsapp_api(cliente_linux, configuracoes, remover_volumes=True)
preparar_ambiente_mu_whatsapp_api(cliente_linux, configuracoes, diretorio_scripts_implantacao)
criar_volumes_mu_whatsapp_api(cliente_linux)
restaurar_backup_volumes_mu_whatsapp_api(arquivo_configuracao)
subir_mu_whatsapp_api(
    cliente_linux,
    configuracoes,
    diretorio_scripts_implantacao=diretorio_scripts_implantacao,
    preparar_ambiente=False
)

exit(0)
