import os
import sys
import shutil
import subprocess
import platform

IS_WINDOWS = platform.system() == "Windows"

if IS_WINDOWS:
    INSTALL_DIR = os.path.expandvars(r'%LOCALAPPDATA%\AntigravityAgent')
    STARTUP_DIR = os.path.expandvars(r'%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup')
    STARTUP_FILE = os.path.join(STARTUP_DIR, "AntigravityAgent.vbs")
else:
    INSTALL_DIR = os.path.expanduser('~/Library/Application Support/AntigravityAgent')
    STARTUP_FILE = os.path.expanduser('~/Library/LaunchAgents/com.antigravity.remoteagent.plist')

def kill_agent_processes():
    print("[*] Finalizando processos do agente em execução...")
    if IS_WINDOWS:
        try:
            cmd = 'powershell -Command "Get-CimInstance Win32_Process -Filter \\"name like \'python%.exe\'\\" | Where-Object { $_.CommandLine -like \'*agent.py*\' -or $_.CommandLine -like \'*agent_watchdog.py*\' } | ForEach-Object { Stop-Process -Id $_.ProcessId -Force }"'
            subprocess.run(cmd, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
            print("    Processos finalizados via PowerShell.")
        except Exception as e:
            print(f"[-] Erro ao finalizar processos no Windows: {e}")
    else:
        try:
            subprocess.run(["pkill", "-f", "agent.py"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
            subprocess.run(["pkill", "-f", "agent_watchdog.py"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
            print("    Processos finalizados.")
        except Exception as e:
            print(f"[-] Erro ao finalizar processos: {e}")

def remove_startup():
    if IS_WINDOWS:
        vbs_path = os.path.join(STARTUP_DIR, "AntigravityAgent.vbs")
        vbs_watchdog_path = os.path.join(STARTUP_DIR, "AntigravityWatchdog.vbs")
        lnk_path = os.path.join(STARTUP_DIR, "AntigravityAgent.lnk")
        lnk_watchdog_path = os.path.join(STARTUP_DIR, "AntigravityWatchdog.lnk")
        removed_any = False
        for path in (vbs_path, vbs_watchdog_path, lnk_path, lnk_watchdog_path):
            if os.path.exists(path):
                print(f"[*] Removendo arquivo de inicialização em: {path}")
                try:
                    os.remove(path)
                    removed_any = True
                except Exception as e:
                    print(f"[-] Erro ao remover {path}: {e}")
        if removed_any:
            print("    Inicialização automática removida com sucesso!")
        else:
            print("    Nenhum arquivo de inicialização automática encontrado.")
    else:
        if os.path.exists(STARTUP_FILE):
            print(f"[*] Removendo arquivo de inicialização em: {STARTUP_FILE}")
            try:
                uid = os.getuid() if hasattr(os, 'getuid') else 0
                subprocess.run(['launchctl', 'bootout', f'gui/{uid}', STARTUP_FILE], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
                subprocess.run(['launchctl', 'unload', STARTUP_FILE], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
                os.remove(STARTUP_FILE)
                print("    Inicialização automática removida com sucesso!")
            except Exception as e:
                print(f"[-] Erro ao remover inicialização: {e}")
        else:
            print("    Nenhum arquivo de inicialização automática encontrado.")

def remove_files():
    if os.path.exists(INSTALL_DIR):
        print(f"[*] Removendo diretório de instalação em: {INSTALL_DIR}")
        try:
            shutil.rmtree(INSTALL_DIR, ignore_errors=True)
            if os.path.exists(INSTALL_DIR):
                print("[-] Alguns arquivos estão bloqueados e serão limpos após reiniciar o computador.")
            else:
                print("    Arquivos de instalação removidos com sucesso!")
        except Exception as e:
            print(f"[-] Erro ao remover diretório de instalação: {e}")
    else:
        print("    Diretório de instalação não encontrado.")

def main():
    print("=" * 60)
    print("      Desinstalador do Antigravity Remote Agent")
    print(f"      Sistema Operacional: {platform.system()}")
    print("=" * 60)
    
    kill_agent_processes()
    remove_startup()
    remove_files()
    
    print("\n=== Desinstalação Concluída! ===")
    print("O agente foi removido com sucesso do sistema.")
    print("Você já pode fechar esta janela.")

if __name__ == "__main__":
    main()
