120 lines
2.5 KiB
Bash
120 lines
2.5 KiB
Bash
#!/bin/bash
|
||
|
||
# 设置错误时立即退出
|
||
set -e
|
||
|
||
# 颜色定义
|
||
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"
|
||
}
|
||
|
||
# 安装Go
|
||
install_go() {
|
||
log_info "安装Go..."
|
||
|
||
# 下载最新版本的Go
|
||
GO_VERSION=$(curl -s https://golang.org/VERSION?m=text)
|
||
GO_URL="https://golang.org/dl/${GO_VERSION}.linux-amd64.tar.gz"
|
||
|
||
# 下载并解压
|
||
curl -L $GO_URL -o /tmp/go.tar.gz
|
||
tar -C /usr/local -xzf /tmp/go.tar.gz
|
||
rm /tmp/go.tar.gz
|
||
|
||
# 设置环境变量
|
||
cat >> ~/.zshrc << EOF
|
||
# Go环境变量
|
||
export GOROOT=/usr/local/go
|
||
export GOPATH=\$HOME/go
|
||
export PATH=\$PATH:\$GOROOT/bin:\$GOPATH/bin
|
||
EOF
|
||
|
||
# 创建Go工作目录
|
||
mkdir -p ~/go/{bin,src,pkg}
|
||
|
||
log_info "Go安装完成"
|
||
}
|
||
|
||
# 安装常用Go工具
|
||
install_go_tools() {
|
||
log_info "安装常用Go工具..."
|
||
|
||
# 安装gopls
|
||
go install golang.org/x/tools/gopls@latest
|
||
|
||
# 安装delve调试器
|
||
go install github.com/go-delve/delve/cmd/dlv@latest
|
||
|
||
# 安装air热重载工具
|
||
go install github.com/cosmtrek/air@latest
|
||
|
||
# 安装mockgen
|
||
go install github.com/golang/mock/mockgen@latest
|
||
|
||
# 安装protoc-gen-go
|
||
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
|
||
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
|
||
|
||
log_info "Go工具安装完成"
|
||
}
|
||
|
||
# 配置Go
|
||
configure_go() {
|
||
log_info "配置Go..."
|
||
|
||
# 设置Go代理
|
||
go env -w GO111MODULE=on
|
||
go env -w GOPROXY=https://goproxy.cn,direct
|
||
|
||
# 配置gopls
|
||
cat > ~/.config/gopls/settings.json << EOF
|
||
{
|
||
"ui.semanticTokens": true,
|
||
"formatting.local": "github.com/your-username",
|
||
"completion.placeholder": true,
|
||
"hover.documentation": true,
|
||
"hover.diagnostics": true,
|
||
"codeLens.documentLink": true,
|
||
"codeLens.references": true,
|
||
"codeLens.implementations": true,
|
||
"codeLens.typeDefinitions": true,
|
||
"codeLens.commands": true
|
||
}
|
||
EOF
|
||
|
||
log_info "Go配置完成"
|
||
}
|
||
|
||
# 主函数
|
||
main() {
|
||
log_info "开始安装Go开发环境..."
|
||
|
||
# 安装Go
|
||
install_go
|
||
|
||
# 安装常用Go工具
|
||
install_go_tools
|
||
|
||
# 配置Go
|
||
configure_go
|
||
|
||
log_info "Go开发环境安装完成!"
|
||
log_info "请运行 'source ~/.zshrc' 或重新打开终端以使环境变量生效。"
|
||
}
|
||
|
||
# 执行主函数
|
||
main |