-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.sh
More file actions
executable file
·157 lines (126 loc) · 3.85 KB
/
Copy pathbuild.sh
File metadata and controls
executable file
·157 lines (126 loc) · 3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#!/bin/bash
# LocalBrisk 构建脚本 - macOS/Linux
# 用于打包 Python 后端并构建 Tauri 应用
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$SCRIPT_DIR"
echo "======================================"
echo "LocalBrisk 构建脚本"
echo "======================================"
# 检查必要工具
check_requirements() {
echo "检查构建环境..."
if ! command -v node &> /dev/null; then
echo "错误: 未找到 Node.js,请先安装 Node.js >= 18"
exit 1
fi
if ! command -v cargo &> /dev/null; then
echo "错误: 未找到 Rust/Cargo,请先安装 Rust"
exit 1
fi
if ! command -v python3 &> /dev/null; then
echo "错误: 未找到 Python3,请先安装 Python >= 3.10"
exit 1
fi
echo "✓ 构建环境检查通过"
}
# 安装前端依赖
install_frontend_deps() {
echo ""
echo "安装依赖..."
cd "$PROJECT_ROOT"
npm install
echo "✓ 根目录依赖安装完成"
cd "$PROJECT_ROOT/frontend"
npm install
echo "✓ 前端依赖安装完成"
cd "$PROJECT_ROOT"
}
# 构建 Python 后端
build_python_backend() {
echo ""
echo "构建 Python 后端..."
cd "$PROJECT_ROOT/backend"
# 创建虚拟环境(如果不存在)
if [ ! -d "venv" ]; then
python3 -m venv venv
fi
# 激活虚拟环境
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
pip install pyinstaller
# 使用 PyInstaller 打包
echo "使用 PyInstaller 打包..."
pyinstaller --clean --noconfirm localbrisk-backend.spec
# 复制到 Tauri binaries 目录
TAURI_BINARIES_DIR="$PROJECT_ROOT/src-tauri/binaries"
mkdir -p "$TAURI_BINARIES_DIR"
# 获取目标三元组
TARGET_TRIPLE=$(rustc -vV | grep host | cut -d ' ' -f2)
# 复制并重命名可执行文件
if [ -f "dist/localbrisk-backend" ]; then
cp "dist/localbrisk-backend" "$TAURI_BINARIES_DIR/localbrisk-backend-$TARGET_TRIPLE"
chmod +x "$TAURI_BINARIES_DIR/localbrisk-backend-$TARGET_TRIPLE"
echo "✓ Python 后端打包完成: localbrisk-backend-$TARGET_TRIPLE"
else
echo "错误: PyInstaller 打包失败"
exit 1
fi
deactivate
}
# 生成应用图标
generate_icons() {
echo ""
echo "生成应用图标..."
cd "$PROJECT_ROOT"
ICONS_DIR="$PROJECT_ROOT/src-tauri/icons"
mkdir -p "$ICONS_DIR"
# 如果图标已存在则跳过
if [ -f "$ICONS_DIR/icon.icns" ] && [ -f "$ICONS_DIR/icon.ico" ]; then
echo "✓ 图标已存在,跳过生成"
return
fi
# 检查是否有 logo.svg
if [ -f "$PROJECT_ROOT/frontend/public/logo.svg" ]; then
# 尝试使用 tauri icon 命令
if command -v npx &> /dev/null; then
npx tauri icon "$PROJECT_ROOT/frontend/public/logo.svg" 2>/dev/null || echo "警告: 图标生成失败,请手动创建图标"
fi
else
echo "警告: 未找到 logo.svg,跳过图标生成"
fi
}
# 构建 Tauri 应用
build_tauri_app() {
echo ""
echo "构建 Tauri 应用..."
cd "$PROJECT_ROOT"
npx tauri build
echo "✓ Tauri 应用构建完成"
}
# 显示构建结果
show_result() {
echo ""
echo "======================================"
echo "构建完成!"
echo "======================================"
echo ""
echo "构建产物位置:"
if [ -d "$PROJECT_ROOT/src-tauri/target/release/bundle" ]; then
echo " macOS: src-tauri/target/release/bundle/macos/"
echo " DMG: src-tauri/target/release/bundle/dmg/"
fi
echo ""
}
# 主流程
main() {
check_requirements
install_frontend_deps
build_python_backend
generate_icons
build_tauri_app
show_result
}
# 运行
main "$@"