You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

155 lines
3.5 KiB

#!/bin/bash
# 设置颜色代码 / Set color codes
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m' # No Color / 无颜色
# Messages / 消息
EN_MESSAGES=(
"Starting build process for version"
"Cleaning old builds..."
"Creating bin directory..."
"Failed to create bin directory"
"Building for"
"Successfully built:"
"Failed to build for"
"Build Summary:"
"Successful builds:"
"Failed builds:"
"Generated files:"
"Build process interrupted"
"Error:"
)
CN_MESSAGES=(
"开始构建版本"
"正在清理旧的构建文件..."
"正在创建bin目录..."
"创建bin目录失败"
"正在构建"
"构建成功:"
"构建失败:"
"构建摘要:"
"成功构建数:"
"失败构建数:"
"生成的文件:"
"构建过程被中断"
"错误:"
)
# 版本信息 / Version info
VERSION="1.0.0"
# Detect system language / 检测系统语言
detect_language() {
if [[ $(locale | grep "LANG=zh_CN") ]]; then
echo "cn"
else
echo "en"
fi
}
# Get message based on language / 根据语言获取消息
get_message() {
local index=$1
local lang=$(detect_language)
if [[ "$lang" == "cn" ]]; then
echo "${CN_MESSAGES[$index]}"
else
echo "${EN_MESSAGES[$index]}"
fi
}
# 错误处理函数 / Error handling function
handle_error() {
echo -e "${RED}$(get_message 12) $1${NC}"
exit 1
}
# 清理函数 / Cleanup function
cleanup() {
echo "$(get_message 1)"
rm -rf ../bin
}
# 创建输出目录 / Create output directory
create_output_dir() {
echo "$(get_message 2)"
mkdir -p ../bin || handle_error "$(get_message 3)"
}
# 构建函数 / Build function
build() {
local os=$1
local arch=$2
local suffix=$3
echo -e "\n$(get_message 4) $os ($arch)..."
output_name="../bin/cursor_id_modifier_v${VERSION}_${os}_${arch}${suffix}"
GOOS=$os GOARCH=$arch go build -o "$output_name" ../main.go
if [ $? -eq 0 ]; then
echo -e "${GREEN}$(get_message 5) ${output_name}${NC}"
else
echo -e "${RED}$(get_message 6) $os $arch${NC}"
return 1
fi
}
# 主函数 / Main function
main() {
# 显示构建信息 / Display build info
echo "$(get_message 0) ${VERSION}"
# 清理旧文件 / Clean old files
cleanup
# 创建输出目录 / Create output directory
create_output_dir
# 定义构建目标 / Define build targets
declare -A targets=(
["windows_amd64"]=".exe"
["darwin_amd64"]=""
["darwin_arm64"]=""
["linux_amd64"]=""
)
# 构建计数器 / Build counters
local success_count=0
local fail_count=0
# 遍历所有目标进行构建 / Build all targets
for target in "${!targets[@]}"; do
os=${target%_*}
arch=${target#*_}
suffix=${targets[$target]}
if build "$os" "$arch" "$suffix"; then
((success_count++))
else
((fail_count++))
fi
done
# 显示构建结果 / Display build results
echo -e "\n$(get_message 7)"
echo -e "${GREEN}$(get_message 8) $success_count${NC}"
if [ $fail_count -gt 0 ]; then
echo -e "${RED}$(get_message 9) $fail_count${NC}"
fi
# 显示生成的文件列表 / Display generated files
echo -e "\n$(get_message 10)"
ls -1 ../bin
}
# 捕获错误信号 / Catch error signals
trap 'echo -e "\n${RED}$(get_message 11)${NC}"; exit 1' INT TERM
# 执行主函数 / Execute main function
main