#!/bin/bash

# Exit on error
set -e

echo "Iniciando processo de build do DNSBlock Agent..."

# Ensure we are in the agent directory
cd "$(dirname "$0")"

# Check if python3-venv is installed
if ! dpkg -s python3-venv >/dev/null 2>&1; then
    echo "Instalando python3-venv..."
    sudo apt-get update && sudo apt-get install -y python3-venv
fi

# Create/Activate Build Venv
if [ ! -d "build_venv" ]; then
    echo "Criando ambiente virtual de build..."
    python3 -m venv build_venv
fi

source build_venv/bin/activate

# Install dependencies
echo "Instalando dependências..."
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
python3 -m pip install pyinstaller

# Build
echo "Compilando binário..."
# --onefile: Create a single executable file
# --name: Name of the executable
# --clean: Clean PyInstaller cache
pyinstaller --onefile --name dnsblock-agent --clean main.py

# Organize Output
echo "Organizando saída..."
mkdir -p dist/
# PyInstaller puts the binary in dist/ by default, but let's ensure structure
# Copy config example
cp config.json.example dist/ 2>/dev/null || echo "Nota: config.json.example não encontrado para copiar."

# Copy distribution files
if [ -d "pkg" ]; then
    cp pkg/install.sh dist/
    cp pkg/dnsblock-agent.service dist/
    cp pkg/README.md dist/
    chmod +x dist/install.sh
    echo "Arquivos de instalação copiados para dist/"
else
    echo "Aviso: Diretório 'pkg' não encontrado. O instalador não será incluído."
fi

echo "Build concluído com sucesso!"
echo "O diretório 'dist' contém todos os arquivos necessários para distribuição."
echo "Para distribuir, compacte a pasta 'agent/dist'."
