#!/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 "СБОРКА ЗАВЕРШЕНА!"