import os
import zipfile

# === CONFIGURAÇÕES ===
PASTA_ORIGEM = os.path.dirname(os.path.abspath(__file__))
NOME_ARQUIVO_ZIP = "reconhecimento_facial_cpanel.zip"

# Padrões que não serão incluídos
EXCLUIR_PASTAS = {'.git', '__pycache__', 'venv', '.idea', '.vscode'}
EXCLUIR_EXTENSOES = {'.pyc', '.pyo', '.log', '.tmp'}
EXCLUIR_ARQUIVOS = {'compactar_projeto.py'}

# === FUNÇÃO PRINCIPAL ===
def compactar_projeto():
    zip_path = os.path.join(PASTA_ORIGEM, NOME_ARQUIVO_ZIP)

    with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
        for root, dirs, files in os.walk(PASTA_ORIGEM):
            # Ignora pastas indesejadas
            dirs[:] = [d for d in dirs if d not in EXCLUIR_PASTAS]

            for file in files:
                if file in EXCLUIR_ARQUIVOS:
                    continue
                _, ext = os.path.splitext(file)
                if ext in EXCLUIR_EXTENSOES:
                    continue

                caminho_completo = os.path.join(root, file)
                caminho_relativo = os.path.relpath(caminho_completo, PASTA_ORIGEM)
                zipf.write(caminho_completo, caminho_relativo)

    print(f"✅ Projeto compactado com sucesso: {zip_path}")

# === EXECUÇÃO ===
if __name__ == "__main__":
    compactar_projeto()
