Initial commit: FunConnect project with server, relay, client and admin panel
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
141
scripts/build.sh
Normal file
141
scripts/build.sh
Normal file
@@ -0,0 +1,141 @@
|
||||
#!/bin/bash
|
||||
# FunMC 构建脚本 (Linux/macOS)
|
||||
# 用于构建所有组件
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
|
||||
TARGET="all"
|
||||
RELEASE=false
|
||||
BUNDLE=false
|
||||
|
||||
print_usage() {
|
||||
echo "用法: $0 [选项]"
|
||||
echo ""
|
||||
echo "选项:"
|
||||
echo " -t, --target <target> 构建目标 (all, client, server, relay) [默认: all]"
|
||||
echo " -r, --release 构建发布版本"
|
||||
echo " -b, --bundle 打包客户端安装包"
|
||||
echo " -h, --help 显示帮助信息"
|
||||
}
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
-t|--target)
|
||||
TARGET="$2"
|
||||
shift 2
|
||||
;;
|
||||
-r|--release)
|
||||
RELEASE=true
|
||||
shift
|
||||
;;
|
||||
-b|--bundle)
|
||||
BUNDLE=true
|
||||
shift
|
||||
;;
|
||||
-h|--help)
|
||||
print_usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "未知选项: $1"
|
||||
print_usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
log_step() {
|
||||
echo -e "\n\033[36m==> $1\033[0m"
|
||||
}
|
||||
|
||||
log_success() {
|
||||
echo -e "\033[32m$1\033[0m"
|
||||
}
|
||||
|
||||
build_server() {
|
||||
log_step "构建主服务端..."
|
||||
cd "$ROOT_DIR/server"
|
||||
|
||||
if $RELEASE; then
|
||||
cargo build --release
|
||||
else
|
||||
cargo build
|
||||
fi
|
||||
|
||||
log_success "主服务端构建完成!"
|
||||
}
|
||||
|
||||
build_relay() {
|
||||
log_step "构建中继服务端..."
|
||||
cd "$ROOT_DIR/relay-server"
|
||||
|
||||
if $RELEASE; then
|
||||
cargo build --release
|
||||
else
|
||||
cargo build
|
||||
fi
|
||||
|
||||
log_success "中继服务端构建完成!"
|
||||
}
|
||||
|
||||
build_client() {
|
||||
log_step "构建客户端..."
|
||||
cd "$ROOT_DIR/client"
|
||||
|
||||
# 安装前端依赖
|
||||
echo "安装前端依赖..."
|
||||
cd ui
|
||||
npm install
|
||||
cd ..
|
||||
|
||||
# 构建 Tauri 应用
|
||||
if $BUNDLE; then
|
||||
if $RELEASE; then
|
||||
cargo tauri build
|
||||
else
|
||||
cargo tauri build --debug
|
||||
fi
|
||||
else
|
||||
if $RELEASE; then
|
||||
cargo build --release
|
||||
else
|
||||
cargo build
|
||||
fi
|
||||
fi
|
||||
|
||||
log_success "客户端构建完成!"
|
||||
}
|
||||
|
||||
echo -e "\033[33mFunMC 构建系统\033[0m"
|
||||
echo "==============="
|
||||
|
||||
case $TARGET in
|
||||
all)
|
||||
build_server
|
||||
build_relay
|
||||
build_client
|
||||
;;
|
||||
client)
|
||||
build_client
|
||||
;;
|
||||
server)
|
||||
build_server
|
||||
;;
|
||||
relay)
|
||||
build_relay
|
||||
;;
|
||||
*)
|
||||
echo "无效的构建目标: $TARGET"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
echo -e "\n\033[32m所有构建完成!\033[0m"
|
||||
|
||||
if $BUNDLE && [[ "$TARGET" == "all" || "$TARGET" == "client" ]]; then
|
||||
echo -e "\n\033[33m客户端安装包位置:\033[0m"
|
||||
echo "$ROOT_DIR/client/target/release/bundle/"
|
||||
fi
|
||||
Reference in New Issue
Block a user