#!/usr/bin/env bash set -euo pipefail # 工具列表(从 go.mod 的 tool 指令中提取) TOOLS=( "git.apinb.com/bsm-tools/protoc-gen-markdown" "git.apinb.com/bsm-tools/protoc-gen-slc" "git.apinb.com/bsm-tools/protoc-gen-ts" "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway" "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2" "github.com/pepabo/protoc-gen-go-client" "google.golang.org/grpc/cmd/protoc-gen-go-grpc" "google.golang.org/protobuf/cmd/protoc-gen-go" ) echo "==> 开始安装 protoc 插件..." for tool in "${TOOLS[@]}"; do echo "--> 安装 $tool" go install "$tool@latest" done echo "==> 全部安装完成。" # 检查 GOBIN / GOPATH 是否在 PATH 中 BIN_DIR="$(go env GOBIN)" if [ -z "$BIN_DIR" ]; then BIN_DIR="$(go env GOPATH)/bin" fi echo echo "工具安装目录: $BIN_DIR" case ":$PATH:" in *":$BIN_DIR:"*) echo "该目录已在 PATH 中,可直接使用。" ;; *) echo "提示:请将 $BIN_DIR 添加到 PATH 环境变量中,例如:" echo " export PATH=\"\$PATH:$BIN_DIR\"" ;; esac