Upload files to "/"
This commit is contained in:
parent
f9a4ae861b
commit
5b9874fac2
255
build.sh
Normal file
255
build.sh
Normal file
@ -0,0 +1,255 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# /futriis/build.sh
|
||||||
|
# Bash-скрипт для сборки проекта futriis на Unix-системах (Solaris, OpenIndiana, Linux)
|
||||||
|
# При запуске без параметров выполняет полную сборку проекта: установка зависимостей,
|
||||||
|
# сборка сервера, сборка клиента и очистка кеша.
|
||||||
|
|
||||||
|
# Цвета для вывода
|
||||||
|
GREEN='\033[1;32m'
|
||||||
|
RED='\033[1;91m' # Изменено с 0;31 на 1;91 для более яркого красного
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
CYAN='\033[0;36m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# Проверка операционной системы
|
||||||
|
UNAME_S=$(uname -s)
|
||||||
|
if [ "$UNAME_S" != "Linux" ] && [ "$UNAME_S" != "SunOS" ]; then
|
||||||
|
echo -e "${RED}Ошибка: Операционная система $UNAME_S не поддерживается. Проект поддерживает только Solaris, OpenIndiana и Linux.${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Переменные
|
||||||
|
BINARY_NAME="futriis"
|
||||||
|
SERVER_BINARY_NAME="futriisd"
|
||||||
|
BUILD_DIR="build"
|
||||||
|
CMD_DIR="./cmd/futriis"
|
||||||
|
|
||||||
|
# Функция для отображения разделителя
|
||||||
|
print_separator() {
|
||||||
|
echo -e "${CYAN}════════════════════════════════════════════════════════════════${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Функция для отображения заголовка
|
||||||
|
print_header() {
|
||||||
|
echo -e "${YELLOW}▶ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Функция для отображения успеха
|
||||||
|
print_success() {
|
||||||
|
echo -e "${GREEN}✓ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Функция для отображения ошибки
|
||||||
|
print_error() {
|
||||||
|
echo -e "${RED}✗ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Создание директории для сборки
|
||||||
|
create_build_dir() {
|
||||||
|
if [ ! -d "$BUILD_DIR" ]; then
|
||||||
|
mkdir -p "$BUILD_DIR"
|
||||||
|
mkdir -p "$BUILD_DIR/plugins"
|
||||||
|
mkdir -p "$BUILD_DIR/data"
|
||||||
|
print_success "Создана директория сборки: $BUILD_DIR"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Установка зависимостей
|
||||||
|
deps() {
|
||||||
|
print_header "Установка зависимостей..."
|
||||||
|
go mod download
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
print_error "Ошибка при загрузке зависимостей"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
go mod tidy
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
print_error "Ошибка при обновлении go.mod"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
print_success "Зависимости установлены"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Сборка клиента
|
||||||
|
build_client() {
|
||||||
|
print_header "Сборка клиента для $UNAME_S..."
|
||||||
|
create_build_dir
|
||||||
|
|
||||||
|
go build -ldflags="-s -w" -o "$BUILD_DIR/$BINARY_NAME" "$CMD_DIR"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
print_success "Клиент собран: $BUILD_DIR/$BINARY_NAME"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
print_error "Ошибка сборки клиента"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Сборка сервера
|
||||||
|
build_server() {
|
||||||
|
print_header "Сборка сервера для $UNAME_S..."
|
||||||
|
create_build_dir
|
||||||
|
|
||||||
|
go build -ldflags="-s -w" -o "$BUILD_DIR/$SERVER_BINARY_NAME" "$CMD_DIR"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
print_success "Сервер собран: $BUILD_DIR/$SERVER_BINARY_NAME"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
print_error "Ошибка сборки сервера"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Очистка кеша Go
|
||||||
|
clean_cache() {
|
||||||
|
print_header "Очистка кеша сборки Go..."
|
||||||
|
go clean -cache
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
print_success "Кеш сборки очищен"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
print_error "Ошибка при очистке кеша"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Полная сборка проекта
|
||||||
|
full_build() {
|
||||||
|
echo
|
||||||
|
print_separator
|
||||||
|
echo -e "${GREEN} F U T R I I S - Полная сборка проекта${NC}"
|
||||||
|
print_separator
|
||||||
|
echo
|
||||||
|
|
||||||
|
local errors=0
|
||||||
|
|
||||||
|
# Шаг 1: Установка зависимостей
|
||||||
|
deps
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
errors=$((errors + 1))
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Шаг 2: Сборка сервера
|
||||||
|
build_server
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
errors=$((errors + 1))
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Шаг 3: Сборка клиента
|
||||||
|
build_client
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
errors=$((errors + 1))
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Шаг 4: Очистка кеша
|
||||||
|
clean_cache
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
errors=$((errors + 1))
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Итоговый отчёт
|
||||||
|
print_separator
|
||||||
|
if [ $errors -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}✅ СБОРКА УСПЕШНО ЗАВЕРШЕНА${NC}"
|
||||||
|
echo -e "${GREEN} Сервер: $BUILD_DIR/$SERVER_BINARY_NAME${NC}"
|
||||||
|
echo -e "${GREEN} Клиент: $BUILD_DIR/$BINARY_NAME${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${RED}❌ СБОРКА ЗАВЕРШЕНА С ОШИБКАМИ ($errors ошибок)${NC}"
|
||||||
|
fi
|
||||||
|
print_separator
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Показываем размер бинарных файлов
|
||||||
|
if [ -f "$BUILD_DIR/$SERVER_BINARY_NAME" ]; then
|
||||||
|
SERVER_SIZE=$(du -h "$BUILD_DIR/$SERVER_BINARY_NAME" | cut -f1)
|
||||||
|
echo -e "Размер сервера: ${YELLOW}$SERVER_SIZE${NC}"
|
||||||
|
fi
|
||||||
|
if [ -f "$BUILD_DIR/$BINARY_NAME" ]; then
|
||||||
|
CLIENT_SIZE=$(du -h "$BUILD_DIR/$BINARY_NAME" | cut -f1)
|
||||||
|
echo -e "Размер клиента: ${YELLOW}$CLIENT_SIZE${NC}"
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
# Функция для отображения справки
|
||||||
|
show_help() {
|
||||||
|
echo "Использование: ./build.sh [КОМАНДА]"
|
||||||
|
echo
|
||||||
|
echo "Доступные команды:"
|
||||||
|
echo " (без параметров) - полная сборка проекта (зависимости + сервер + клиент + очистка)"
|
||||||
|
echo " deps - только установка зависимостей"
|
||||||
|
echo " build - только сборка клиента"
|
||||||
|
echo " build-server - только сборка сервера"
|
||||||
|
echo " install - установка проекта в систему"
|
||||||
|
echo " run - сборка и запуск клиента"
|
||||||
|
echo " run-server - сборка и запуск сервера"
|
||||||
|
echo " test - запуск тестов"
|
||||||
|
echo " clean - очистка директории сборки"
|
||||||
|
echo " clean-cache - только очистка кеша Go"
|
||||||
|
echo " help - показать эту справку"
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
# Обработка аргументов командной строки
|
||||||
|
case "$1" in
|
||||||
|
deps)
|
||||||
|
deps
|
||||||
|
;;
|
||||||
|
build)
|
||||||
|
build_client
|
||||||
|
;;
|
||||||
|
build-server)
|
||||||
|
build_server
|
||||||
|
;;
|
||||||
|
install)
|
||||||
|
echo -e "${GREEN}Установка проекта...${NC}"
|
||||||
|
go install -ldflags="-s -w" "$CMD_DIR"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}✓ Установка завершена${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗ Ошибка установки${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
run)
|
||||||
|
build_client && "./$BUILD_DIR/$BINARY_NAME"
|
||||||
|
;;
|
||||||
|
run-server)
|
||||||
|
build_server && "./$BUILD_DIR/$SERVER_BINARY_NAME" -server -config config.toml
|
||||||
|
;;
|
||||||
|
test)
|
||||||
|
echo -e "${GREEN}Запуск тестов...${NC}"
|
||||||
|
go test -v ./...
|
||||||
|
;;
|
||||||
|
clean)
|
||||||
|
echo -e "${GREEN}Очистка...${NC}"
|
||||||
|
rm -rf "$BUILD_DIR"
|
||||||
|
go clean
|
||||||
|
echo -e "${GREEN}✓ Очистка завершена${NC}"
|
||||||
|
;;
|
||||||
|
clean-cache)
|
||||||
|
clean_cache
|
||||||
|
;;
|
||||||
|
help|"")
|
||||||
|
if [ "$1" = "" ]; then
|
||||||
|
full_build
|
||||||
|
else
|
||||||
|
show_help
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "${RED}Неизвестная команда: $1${NC}"
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
Loading…
x
Reference in New Issue
Block a user