#!/bin/bash

# Build script for Tailscale Clone clients on all platforms
set -e

# Colors for output
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

echo -e "${GREEN}Building Tailscale Clone clients for all platforms...${NC}"

# Create output directory
mkdir -p bin

# Function to build for a specific platform
build_platform() {
    local platform=$1
    local arch=$2
    local output_name=$3
    local tags=$4
    
    echo -e "${YELLOW}Building for ${platform} (${arch})...${NC}"
    
    # Set environment variables for cross-compilation
    export GOOS=$platform
    export GOARCH=$arch
    
    # Build the client
    go build -tags "$tags" -o "bin/${output_name}" "cmd/client_${platform}/main.go"
    
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}✓ Built ${output_name}${NC}"
    else
        echo -e "${RED}✗ Failed to build ${output_name}${NC}"
        return 1
    fi
}

# Build for different platforms
echo -e "${GREEN}Building clients...${NC}"

# Linux builds
build_platform "linux" "amd64" "tailscale-client-linux-amd64" "linux"
build_platform "linux" "arm64" "tailscale-client-linux-arm64" "linux"
build_platform "linux" "386" "tailscale-client-linux-386" "linux"

# Windows builds
build_platform "windows" "amd64" "tailscale-client-windows-amd64.exe" "windows"
build_platform "windows" "386" "tailscale-client-windows-386.exe" "windows"

# macOS builds
build_platform "darwin" "amd64" "tailscale-client-darwin-amd64" "darwin"
build_platform "darwin" "arm64" "tailscale-client-darwin-arm64" "darwin"

# Build controller (Linux only for now)
echo -e "${YELLOW}Building controller...${NC}"
export GOOS=linux
export GOARCH=amd64
go build -o "bin/tailscale-controller-linux-amd64" "cmd/controller/main.go"

echo -e "${GREEN}Build complete!${NC}"
echo ""
echo -e "${GREEN}Generated binaries:${NC}"
ls -la bin/tailscale-*

echo ""
echo -e "${YELLOW}Usage instructions:${NC}"
echo "Linux:   sudo ./bin/tailscale-client-linux-amd64 -name my-node"
echo "Windows: tailscale-client-windows-amd64.exe -name my-node"
echo "macOS:   sudo ./bin/tailscale-client-darwin-amd64 -name my-node" 