Files
cursor-api/scripts/setup.sh
2024-12-30 23:41:04 +08:00

157 lines
3.5 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 设置错误时退出
set -e
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
info() {
echo -e "${BLUE}[INFO] $1${NC}"
}
error() {
echo -e "${RED}[ERROR] $1${NC}"
exit 1
}
# 检查是否为 root 用户FreeBSD 和 Linux
if [ "$(uname)" != "Darwin" ] && [ "$EUID" -ne 0 ]; then
error "请使用 root 权限运行此脚本 (sudo ./setup.sh)"
fi
# 检测包管理器
if command -v brew &> /dev/null; then
PKG_MANAGER="brew"
info "检测到 macOS/Homebrew 系统"
elif command -v pkg &> /dev/null; then
PKG_MANAGER="pkg"
info "检测到 FreeBSD 系统"
elif command -v apt-get &> /dev/null; then
PKG_MANAGER="apt-get"
info "检测到 Debian/Ubuntu 系统"
elif command -v dnf &> /dev/null; then
PKG_MANAGER="dnf"
info "检测到 Fedora/RHEL 系统"
elif command -v yum &> /dev/null; then
PKG_MANAGER="yum"
info "检测到 CentOS 系统"
else
error "未检测到支持的包管理器"
fi
# 更新包管理器缓存
info "更新包管理器缓存..."
case $PKG_MANAGER in
"brew")
brew update
;;
"pkg")
pkg update
;;
*)
$PKG_MANAGER update -y
;;
esac
# 安装基础构建工具
info "安装基础构建工具..."
case $PKG_MANAGER in
"brew")
brew install \
protobuf \
pkg-config \
openssl \
curl \
git \
node
;;
"pkg")
pkg install -y \
gmake \
protobuf \
pkgconf \
openssl \
curl \
git \
node
;;
"apt-get")
$PKG_MANAGER install -y --no-install-recommends \
build-essential \
protobuf-compiler \
pkg-config \
libssl-dev \
ca-certificates \
curl \
tzdata \
git
;;
*)
$PKG_MANAGER install -y \
gcc \
gcc-c++ \
make \
protobuf-compiler \
pkg-config \
openssl-devel \
ca-certificates \
curl \
tzdata \
git
;;
esac
# 安装 Node.js 和 npm如果还没有通过包管理器安装
if ! command -v node &> /dev/null && [ "$PKG_MANAGER" != "brew" ] && [ "$PKG_MANAGER" != "pkg" ]; then
info "安装 Node.js 和 npm..."
if [ "$PKG_MANAGER" = "apt-get" ]; then
curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
$PKG_MANAGER install -y nodejs
else
curl -fsSL https://rpm.nodesource.com/setup_lts.x | bash -
$PKG_MANAGER install -y nodejs
fi
fi
# 安装 Rust如果未安装
if ! command -v rustc &> /dev/null; then
info "安装 Rust..."
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
. "$HOME/.cargo/env"
fi
# 添加目标平台
info "添加 Rust 目标平台..."
case "$(uname)" in
"FreeBSD")
rustup target add x86_64-unknown-freebsd
;;
"Darwin")
rustup target add x86_64-apple-darwin aarch64-apple-darwin
;;
*)
rustup target add x86_64-unknown-linux-gnu
;;
esac
# 清理包管理器缓存
case $PKG_MANAGER in
"apt-get")
rm -rf /var/lib/apt/lists/*
;;
"pkg")
pkg clean -y
;;
esac
# 设置时区(除了 macOS
if [ "$(uname)" != "Darwin" ]; then
info "设置时区为 Asia/Shanghai..."
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
fi
echo -e "${GREEN}安装完成!${NC}"