feat: 完成 Zsh 插件配置脚本的优化和测试 - 修复 autojump 配置冲突 - 清理重复的插件安装 - 优化脚本结构和注释 feat: 优化shell脚本 - 1. 增强错误处理和恢复机制 2. 添加网络连接优化和镜像源支持 3. 改进进度显示和用户交互 4. 优化配置文件管理和备份 5. 改进插件管理机制 6. 增强依赖检查和安装 7. 添加完整的日志记录功能 8. 修复字体安装相关问题 docs: 完善shell、system和utils部分的README文档 - 1. 添加详细的脚本说明和使用方法 2. 补充依赖要求和注意事项 3. 添加常见问题解答 4. 更新版本日志 feat(editor): 优化 neovim 和 nvchad 安装脚本,添加性能优化配置和详细文档 feat: 优化Python开发环境安装脚本,分离基础包和机器学习包,修复virtualenvwrapper配置 feat: 优化开发工具安装脚本,统一使用common.sh中的函数,改进错误处理 fix: 修复DNMP安装脚本,跳过自动配置PHP开发环境 fix: 提交删除的 init.sh 和 mysql.sh 文件
158 lines
3.6 KiB
Bash
158 lines
3.6 KiB
Bash
#!/bin/bash
|
||
|
||
# 导入公共函数
|
||
source "$(dirname "$0")/../utils/common.sh"
|
||
|
||
# 安装Go
|
||
install_go() {
|
||
log_info "安装Go..."
|
||
|
||
# 使用国内镜像获取最新版本
|
||
local GO_VERSION="go1.22.1"
|
||
local GO_URL="https://mirrors.aliyun.com/golang/${GO_VERSION}.linux-amd64.tar.gz"
|
||
|
||
cd /tmp
|
||
|
||
# 下载并解压
|
||
if ! curl -L "$GO_URL" -o go.tar.gz; then
|
||
log_error "下载Go失败"
|
||
return 1
|
||
fi
|
||
|
||
tar -C /usr/local -xzf go.tar.gz
|
||
rm go.tar.gz
|
||
|
||
# 备份现有配置
|
||
manage_config "backup" "${USER_HOME}/.zshrc"
|
||
|
||
# 设置环境变量
|
||
cat >> "${USER_HOME}/.zshrc" << EOF
|
||
# Go环境变量
|
||
export GOROOT=/usr/local/go
|
||
export GOPATH=\$HOME/go
|
||
export PATH=\$PATH:\$GOROOT/bin:\$GOPATH/bin
|
||
EOF
|
||
|
||
# 创建Go工作目录
|
||
mkdir -p "${USER_HOME}/go/{bin,src,pkg}"
|
||
chown -R $CURRENT_USER:$CURRENT_USER "${USER_HOME}/go"
|
||
|
||
# 设置环境变量以便后续使用
|
||
export GOROOT=/usr/local/go
|
||
export GOPATH="${USER_HOME}/go"
|
||
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
|
||
|
||
log_success "Go安装完成"
|
||
}
|
||
|
||
# 安装常用Go工具
|
||
install_go_tools() {
|
||
log_info "安装常用Go工具..."
|
||
|
||
# 切换到用户目录
|
||
cd "${USER_HOME}"
|
||
|
||
# 以用户身份运行命令,同时设置必要的环境变量
|
||
su - $CURRENT_USER << EOF
|
||
# 设置Go环境变量
|
||
export GOROOT=/usr/local/go
|
||
export GOPATH=\$HOME/go
|
||
export PATH=\$PATH:\$GOROOT/bin:\$GOPATH/bin
|
||
|
||
# 验证Go安装
|
||
go version || exit 1
|
||
|
||
# 设置Go代理
|
||
go env -w GO111MODULE=on
|
||
go env -w GOPROXY=https://goproxy.cn,direct
|
||
|
||
# 安装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
|
||
EOF
|
||
|
||
# 检查命令执行状态
|
||
if [ $? -ne 0 ]; then
|
||
log_error "Go工具安装失败"
|
||
return 1
|
||
fi
|
||
|
||
log_success "Go工具安装完成"
|
||
}
|
||
|
||
# 配置Go
|
||
configure_go() {
|
||
log_info "配置Go..."
|
||
|
||
# 切换到用户目录
|
||
cd "${USER_HOME}"
|
||
|
||
# 创建gopls配置目录
|
||
mkdir -p "${USER_HOME}/.config/gopls"
|
||
chown -R $CURRENT_USER:$CURRENT_USER "${USER_HOME}/.config"
|
||
|
||
# 配置gopls
|
||
cat > "${USER_HOME}/.config/gopls/settings.json" << EOF
|
||
{
|
||
"ui.semanticTokens": true,
|
||
"formatting.local": "github.com/${CURRENT_USER}",
|
||
"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_success "Go配置完成"
|
||
}
|
||
|
||
# 主函数
|
||
main() {
|
||
# 检查root权限
|
||
check_root
|
||
|
||
# 获取用户信息
|
||
get_user_info
|
||
|
||
# 设置日志
|
||
setup_logging
|
||
|
||
log_info "开始安装Go开发环境..."
|
||
|
||
# 检查依赖
|
||
check_dependencies curl git build-essential
|
||
|
||
# 安装Go
|
||
install_go
|
||
|
||
# 安装常用Go工具
|
||
install_go_tools
|
||
|
||
# 配置Go
|
||
configure_go
|
||
|
||
log_success "Go开发环境安装完成!"
|
||
log_info "请运行 'source ~/.zshrc' 或重新打开终端以使环境变量生效。"
|
||
}
|
||
|
||
# 设置清理函数
|
||
trap cleanup EXIT
|
||
|
||
# 执行主函数
|
||
main |