mirror of
https://github.com/yuaotian/go-cursor-help.git
synced 2025-06-08 12:32:06 +08:00

- Updated `install.sh` to include versioning and enhanced bilingual messages for better user feedback. - Refactored platform detection logic to dynamically set binary names based on the version. - Added checks for system requirements, including curl installation and write permissions. - Improved error handling with context-specific messages for better debugging. - Cleaned up the `go.mod` file by consolidating dependency requirements. This commit enhances the installation process and user experience by providing clearer feedback and ensuring necessary prerequisites are met.
141 lines
4.8 KiB
Bash
141 lines
4.8 KiB
Bash
#!/bin/bash
|
||
|
||
# Version / 版本号
|
||
VERSION="v2.0.0"
|
||
|
||
# Bilingual message functions / 双语消息函数
|
||
error() {
|
||
echo "❌ Error: $1"
|
||
echo "❌ 错误:$2"
|
||
exit 1
|
||
}
|
||
|
||
info() {
|
||
echo "ℹ️ $1"
|
||
echo "ℹ️ $2"
|
||
}
|
||
|
||
success() {
|
||
echo "✅ $1"
|
||
echo "✅ $2"
|
||
}
|
||
|
||
# Detect OS and architecture / 检测操作系统和架构
|
||
detect_platform() {
|
||
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
|
||
ARCH=$(uname -m)
|
||
|
||
case "$OS" in
|
||
linux*)
|
||
case "$ARCH" in
|
||
x86_64) BINARY_NAME="cursor_id_modifier_${VERSION}_linux_amd64" ;;
|
||
*) error "Unsupported Linux architecture: $ARCH" "不支持的Linux架构:$ARCH" ;;
|
||
esac
|
||
;;
|
||
darwin*)
|
||
case "$ARCH" in
|
||
x86_64) BINARY_NAME="cursor_id_modifier_${VERSION}_darwin_amd64_intel" ;;
|
||
arm64) BINARY_NAME="cursor_id_modifier_${VERSION}_darwin_arm64_m1" ;;
|
||
*) error "Unsupported macOS architecture: $ARCH" "不支持的macOS架构:$ARCH" ;;
|
||
esac
|
||
;;
|
||
msys*|mingw*|cygwin*)
|
||
case "$ARCH" in
|
||
x86_64) BINARY_NAME="cursor_id_modifier_${VERSION}_windows_amd64.exe" ;;
|
||
*) error "Unsupported Windows architecture: $ARCH" "不支持的Windows架构:$ARCH" ;;
|
||
esac
|
||
;;
|
||
*)
|
||
error "Unsupported operating system: $OS" "不支持的操作系统:$OS"
|
||
;;
|
||
esac
|
||
}
|
||
|
||
# Check system requirements / 检查系统要求
|
||
check_requirements() {
|
||
info "Checking system requirements..." "正在检查系统要求..."
|
||
|
||
# Check curl
|
||
if ! command -v curl >/dev/null 2>&1; then
|
||
error "curl is required. Please install curl first." \
|
||
"需要安装 curl。请先安装 curl 后再运行此脚本。"
|
||
fi
|
||
|
||
# Check write permissions / 检查写入权限
|
||
if [ ! -w "$INSTALL_DIR" ]; then
|
||
error "No write permission for $INSTALL_DIR. Please run with sudo." \
|
||
"没有 $INSTALL_DIR 的写入权限。请使用 sudo 运行此脚本。"
|
||
}
|
||
}
|
||
|
||
# Verify binary / 验证二进制文件
|
||
verify_binary() {
|
||
info "Verifying binary..." "正在验证二进制文件..."
|
||
if [ ! -f "$TEMP_DIR/$BINARY_NAME" ]; then
|
||
error "Binary file download failed or does not exist" \
|
||
"二进制文件下载失败或不存在"
|
||
fi
|
||
|
||
# Check file size / 检查文件大小
|
||
local size=$(wc -c < "$TEMP_DIR/$BINARY_NAME")
|
||
if [ "$size" -lt 1000000 ]; then # At least 1MB / 至少1MB
|
||
error "Downloaded file size is abnormal, download might be incomplete" \
|
||
"下载的文件大小异常,可能下载不完整"
|
||
}
|
||
}
|
||
|
||
# Main installation process / 主安装流程
|
||
main() {
|
||
info "Starting installation of cursor-id-modifier ${VERSION}..." \
|
||
"开始安装 cursor-id-modifier ${VERSION}..."
|
||
|
||
# Initialize installation / 初始化安装
|
||
detect_platform
|
||
INSTALL_DIR="/usr/local/bin"
|
||
[ -d "$INSTALL_DIR" ] || mkdir -p "$INSTALL_DIR"
|
||
|
||
# Check requirements / 检查要求
|
||
check_requirements
|
||
|
||
# Create temp directory / 创建临时目录
|
||
TEMP_DIR=$(mktemp -d)
|
||
trap 'rm -rf "$TEMP_DIR"' EXIT
|
||
|
||
# Download binary / 下载二进制文件
|
||
info "Downloading cursor-id-modifier ($OS-$ARCH)..." \
|
||
"正在下载 cursor-id-modifier ($OS-$ARCH)..."
|
||
DOWNLOAD_URL="https://github.com/yuaotian/go-cursor-help/raw/main/bin/$BINARY_NAME"
|
||
|
||
if ! curl -fsSL "$DOWNLOAD_URL" -o "$TEMP_DIR/$BINARY_NAME"; then
|
||
error "Failed to download binary" "下载二进制文件失败"
|
||
fi
|
||
|
||
# Verify download / 验证下载
|
||
verify_binary
|
||
|
||
# Set permissions / 设置权限
|
||
info "Setting execution permissions..." "正在设置执行权限..."
|
||
if ! chmod +x "$TEMP_DIR/$BINARY_NAME"; then
|
||
error "Failed to set executable permissions" "无法设置可执行权限"
|
||
fi
|
||
|
||
# Handle macOS security / 处理macOS安全设置
|
||
if [ "$OS" = "darwin" ]; then
|
||
info "Handling macOS security settings..." "正在处理macOS安全设置..."
|
||
xattr -d com.apple.quarantine "$TEMP_DIR/$BINARY_NAME" 2>/dev/null || true
|
||
fi
|
||
|
||
# Install binary / 安装二进制文件
|
||
info "Installing binary..." "正在安装二进制文件..."
|
||
if ! mv "$TEMP_DIR/$BINARY_NAME" "$INSTALL_DIR/cursor-id-modifier"; then
|
||
error "Failed to install binary" "安装二进制文件失败"
|
||
fi
|
||
|
||
success "Installation successful! You can now run 'cursor-id-modifier' from anywhere." \
|
||
"安装成功!现在可以在任何位置运行 'cursor-id-modifier'。"
|
||
success "For help, run 'cursor-id-modifier --help'" \
|
||
"如需帮助,请运行 'cursor-id-modifier --help'"
|
||
}
|
||
|
||
# Start installation / 开始安装
|
||
main |