Initial commit: ReTeamSpeak cross-platform TeamSpeak client
CI/CD / Build Frontend (push) Failing after 11s
CI/CD / Test (macos-latest) (push) Has been cancelled
CI/CD / Test (windows-latest) (push) Has been cancelled
CI/CD / Build Desktop (linux) (push) Has been cancelled
CI/CD / Build Desktop (macos) (push) Has been cancelled
CI/CD / Build Desktop (windows) (push) Has been cancelled
CI/CD / Release (push) Has been cancelled
CI/CD / Test (ubuntu-latest) (push) Failing after 2s
CI/CD / Build Frontend (push) Failing after 11s
CI/CD / Test (macos-latest) (push) Has been cancelled
CI/CD / Test (windows-latest) (push) Has been cancelled
CI/CD / Build Desktop (linux) (push) Has been cancelled
CI/CD / Build Desktop (macos) (push) Has been cancelled
CI/CD / Build Desktop (windows) (push) Has been cancelled
CI/CD / Release (push) Has been cancelled
CI/CD / Test (ubuntu-latest) (push) Failing after 2s
- tscore: Protocol implementation (packets, crypto, connection handshake) - tsaudio: Audio engine (capture, playback, codec, VAD, jitter buffer) - tsdb: SQLite database (identities, bookmarks, messages, settings) - shared: Core types and events - tauri-app: Tauri v2 desktop application with React frontend - docs: SRS, SAD, SDD documentation - CI/CD: GitHub Actions workflow - 32 unit tests passing
This commit is contained in:
@@ -0,0 +1,182 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ReTeamSpeak 跨平台构建脚本
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_DIR="$SCRIPT_DIR"
|
||||
BUILD_DIR="$PROJECT_DIR/build"
|
||||
|
||||
# 颜色输出
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
log_info() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# 检查依赖
|
||||
check_dependencies() {
|
||||
log_info "检查依赖..."
|
||||
|
||||
# 检查 Rust
|
||||
if ! command -v rustc &> /dev/null; then
|
||||
log_error "Rust 未安装。请访问 https://rustup.rs 安装 Rust。"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查 Node.js
|
||||
if ! command -v node &> /dev/null; then
|
||||
log_error "Node.js 未安装。请访问 https://nodejs.org 安装 Node.js。"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查 npm
|
||||
if ! command -v npm &> /dev/null; then
|
||||
log_error "npm 未安装。"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_info "依赖检查完成。"
|
||||
}
|
||||
|
||||
# 构建前端
|
||||
build_frontend() {
|
||||
log_info "构建前端..."
|
||||
cd "$PROJECT_DIR/src/tauri-app/frontend"
|
||||
npm install
|
||||
npm run build
|
||||
log_info "前端构建完成。"
|
||||
}
|
||||
|
||||
# 构建桌面应用
|
||||
build_desktop() {
|
||||
log_info "构建桌面应用..."
|
||||
cd "$PROJECT_DIR/src/tauri-app/src-tauri"
|
||||
cargo build --release
|
||||
log_info "桌面应用构建完成。"
|
||||
}
|
||||
|
||||
# 构建 Android 应用
|
||||
build_android() {
|
||||
log_info "构建 Android 应用..."
|
||||
cd "$PROJECT_DIR/src/tauri-app/src-tauri"
|
||||
|
||||
# 检查 Android SDK
|
||||
if [ -z "$ANDROID_HOME" ]; then
|
||||
log_error "ANDROID_HOME 环境变量未设置。"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cargo tauri android build
|
||||
log_info "Android 应用构建完成。"
|
||||
}
|
||||
|
||||
# 构建 iOS 应用
|
||||
build_ios() {
|
||||
log_info "构建 iOS 应用..."
|
||||
cd "$PROJECT_DIR/src/tauri-app/src-tauri"
|
||||
|
||||
# 检查 Xcode
|
||||
if ! command -v xcodebuild &> /dev/null; then
|
||||
log_error "Xcode 未安装。"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cargo tauri ios build
|
||||
log_info "iOS 应用构建完成。"
|
||||
}
|
||||
|
||||
# 构建所有平台
|
||||
build_all() {
|
||||
log_info "构建所有平台..."
|
||||
build_frontend
|
||||
build_desktop
|
||||
|
||||
# 检查是否在 macOS 上
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
build_ios
|
||||
fi
|
||||
|
||||
# 检查 Android SDK
|
||||
if [ -n "$ANDROID_HOME" ]; then
|
||||
build_android
|
||||
fi
|
||||
|
||||
log_info "所有平台构建完成。"
|
||||
}
|
||||
|
||||
# 清理构建
|
||||
clean() {
|
||||
log_info "清理构建..."
|
||||
rm -rf "$BUILD_DIR"
|
||||
cd "$PROJECT_DIR/src/tauri-app/src-tauri"
|
||||
cargo clean
|
||||
cd "$PROJECT_DIR/src/tauri-app/frontend"
|
||||
rm -rf node_modules dist
|
||||
log_info "清理完成。"
|
||||
}
|
||||
|
||||
# 显示帮助
|
||||
show_help() {
|
||||
echo "用法: $0 [命令]"
|
||||
echo ""
|
||||
echo "命令:"
|
||||
echo " all 构建所有平台"
|
||||
echo " desktop 构建桌面应用"
|
||||
echo " android 构建 Android 应用"
|
||||
echo " ios 构建 iOS 应用"
|
||||
echo " frontend 构建前端"
|
||||
echo " clean 清理构建"
|
||||
echo " help 显示帮助"
|
||||
echo ""
|
||||
echo "示例:"
|
||||
echo " $0 all # 构建所有平台"
|
||||
echo " $0 desktop # 仅构建桌面应用"
|
||||
echo " $0 android # 仅构建 Android 应用"
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
check_dependencies
|
||||
|
||||
case "${1:-help}" in
|
||||
all)
|
||||
build_all
|
||||
;;
|
||||
desktop)
|
||||
build_frontend
|
||||
build_desktop
|
||||
;;
|
||||
android)
|
||||
build_frontend
|
||||
build_android
|
||||
;;
|
||||
ios)
|
||||
build_frontend
|
||||
build_ios
|
||||
;;
|
||||
frontend)
|
||||
build_frontend
|
||||
;;
|
||||
clean)
|
||||
clean
|
||||
;;
|
||||
help|*)
|
||||
show_help
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user