#!/usr/bin/env bash

set -e  # Остановка при любой ошибке

APP_NAME="gpio-monitor-server"
CMD_PATH="./cmd/server"
BUILD_DIR="./build"

echo "СБОРКА GPIO MONITOR SERVER"

# ===== 1. СБОРКА TYPESCRIPT =====
echo ""
echo "Шаг 1/4: Сборка TypeScript фронтенда..."
cd ~/temp/golang/cmd/server/web

# Проверяем наличие node_modules
if [ ! -d "node_modules" ]; then
    echo "   Установка npm зависимостей..."
    npm install
fi

# Собираем TypeScript
echo "   Компиляция TypeScript в JavaScript..."
npm run build

if [ -d "dist" ]; then
    echo "   ✅ TypeScript скомпилирован успешно!"
    echo "   📁 Скомпилированные файлы: $(ls dist/ | wc -l) файлов"
else
    echo "   ❌ Ошибка: папка dist не создана!"
    exit 1
fi

# ===== 2. ПОДГОТОВКА GO СБОРКИ =====
echo ""
echo "Шаг 2/4: Подготовка Go сборки..."
cd ~/temp/golang

echo "   Очистка старой сборки..."
rm -rf ${BUILD_DIR}
mkdir -p ${BUILD_DIR}

echo "   Загрузка зависимостей..."
go mod tidy

# ===== 3. КОМПИЛЯЦИЯ GO =====
echo ""
echo "аг 3/4: Компиляция Go сервера..."

# Для Raspberry Pi (ARM64)
echo "   Целевая платформа: Linux ARM64"
GOOS=linux GOARCH=arm64 go build -o ${BUILD_DIR}/${APP_NAME} ${CMD_PATH}

# Проверяем успешность сборки
if [ -f "${BUILD_DIR}/${APP_NAME}" ]; then
    echo "   ✅ Go сервер скомпилирован успешно!"
else
    echo "   ❌ Ошибка компиляции Go сервера!"
    exit 1
fi

# ===== 4. ФИНАЛЬНЫЕ ДЕЙСТВИЯ =====
echo ""
echo "Шаг 4/4: Финальная проверка..."

# Проверяем размер
SIZE=$(ls -lh ${BUILD_DIR}/${APP_NAME} | awk '{print $5}')
echo "   Размер бинарного файла: ${SIZE}"

# Проверяем наличие embed файлов
echo "   Проверка встроенных файлов..."
if [ -d "cmd/server/web/dist" ]; then
    echo "   ✅ TypeScript файлы (dist) включены в сборку"
fi

if [ -d "cmd/server/web/css" ]; then
    echo "   ✅ CSS файлы включены в сборку"
fi

if [ -f "cmd/server/web/dashboard.html" ]; then
    echo "   ✅ HTML файлы включены в сборку"
fi

echo "СБОРКА ЗАВЕРШЕНА!"
