package main

import (
	"fmt"
	"os"

	"vpn-client/internal/admin"
	"vpn-client/internal/cli"
	"vpn-client/internal/config"
	"vpn-client/internal/downloader"
)

func main() {
	// Проверка прав администратора
	admin.RequireAdmin()

	// Инициализация конфигурации
	if err := config.Init(); err != nil {
		fmt.Fprintf(os.Stderr, "Ошибка инициализации: %v\n", err)
		os.Exit(1)
	}

	// Проверка и загрузка Xray и V2Ray
	fmt.Println("Проверка наличия Xray и V2Ray...")
	if err := downloader.CheckAndDownloadBoth(config.XrayDir, config.V2RayDir); err != nil {
		fmt.Fprintf(os.Stderr, "Ошибка загрузки ядер: %v\n", err)
		fmt.Println("\nНажмите Enter для выхода...")
		fmt.Scanln()
		os.Exit(1)
	}

	// Запуск CLI
	if err := cli.Run(); err != nil {
		fmt.Fprintf(os.Stderr, "Ошибка: %v\n", err)
		fmt.Println("\nНажмите Enter для выхода...")
		fmt.Scanln()
		os.Exit(1)
	}
	
	// Нормальный выход
	os.Exit(0)
}
