parent
0c58cd9c5a
commit
a08e0f7715
After Width: | Height: | Size: 2.1 MiB |
@ -0,0 +1,19 @@ |
|||||||
|
#!/bin/bash |
||||||
|
set -e |
||||||
|
if [[ -z $GOPATH ]]; then |
||||||
|
GOPATH=${HOME}/go |
||||||
|
fi |
||||||
|
BIN_PATH=$( cut -d ':' -f 1 <<< "$GOPATH" )/bin |
||||||
|
if [[ ! -z $GOBIN ]]; then |
||||||
|
BIN_PATH=$GOBIN |
||||||
|
fi |
||||||
|
if [[ ! -z $INSTALL_PATH ]]; then |
||||||
|
BIN_PATH=$INSTALL_PATH |
||||||
|
fi |
||||||
|
if [[ -f $BIN_PATH/kprotoc ]]; then |
||||||
|
echo "kprotoc alreay install, remove $BIN_PATH/kprotoc first to reinstall." |
||||||
|
exit 1; |
||||||
|
fi |
||||||
|
|
||||||
|
ln -s $GOPATH/src/github.com/bilibili/kratos/tool/kprotoc/kprotoc.sh $BIN_PATH/kprotoc |
||||||
|
echo "install kprotoc to $BIN_PATH/kprotoc done!" |
@ -0,0 +1,118 @@ |
|||||||
|
#!/bin/bash |
||||||
|
DEFAULT_PROTOC_GEN="gogofast" |
||||||
|
DEFAULT_PROTOC="protoc" |
||||||
|
KRATOS_DIR_NAME="github.com/bilibili/kratos" |
||||||
|
USR_INCLUDE_DIR="/usr/local/include" |
||||||
|
GOPATH=$GOPATH |
||||||
|
if [[ -z $GOPATH ]]; then |
||||||
|
GOPATH=${HOME}/go |
||||||
|
fi |
||||||
|
|
||||||
|
function _install_protoc() { |
||||||
|
osname=$(uname -s) |
||||||
|
echo "install protoc ..." |
||||||
|
case $osname in |
||||||
|
"Darwin" ) |
||||||
|
brew install protobuf |
||||||
|
;; |
||||||
|
*) |
||||||
|
echo "unknown operating system, need install protobuf manual see: https://developers.google.com/protocol-buffers" |
||||||
|
exit 1 |
||||||
|
;; |
||||||
|
esac |
||||||
|
} |
||||||
|
|
||||||
|
function _install_protoc_gen() { |
||||||
|
local protoc_gen=$1 |
||||||
|
case $protoc_gen in |
||||||
|
"gofast" ) |
||||||
|
echo "install gofast from github.com/gogo/protobuf/protoc-gen-gofast" |
||||||
|
go get github.com/gogo/protobuf/protoc-gen-gofast |
||||||
|
;; |
||||||
|
"gogofast" ) |
||||||
|
echo "install gogofast from github.com/gogo/protobuf/protoc-gen-gogofast" |
||||||
|
go get github.com/gogo/protobuf/protoc-gen-gogofast |
||||||
|
;; |
||||||
|
"gogo" ) |
||||||
|
echo "install gogo from github.com/gogo/protobuf/protoc-gen-gogo" |
||||||
|
go get github.com/gogo/protobuf/protoc-gen-gogo |
||||||
|
;; |
||||||
|
"go" ) |
||||||
|
echo "install protoc-gen-go from github.com/golang/protobuf" |
||||||
|
go get github.com/golang/protobuf/{proto,protoc-gen-go} |
||||||
|
;; |
||||||
|
*) |
||||||
|
echo "can't install protoc-gen-${protoc_gen} automatic !" |
||||||
|
exit 1; |
||||||
|
;; |
||||||
|
esac |
||||||
|
} |
||||||
|
|
||||||
|
function _find_kratos_dir() { |
||||||
|
local kratos_dir_name=$1 |
||||||
|
local current_dir="$GOPATH/src/$kratos_dir_name" |
||||||
|
if [[ ! -d $current_dir ]]; then |
||||||
|
go get -u $kratos_dir_name |
||||||
|
fi |
||||||
|
echo $current_dir |
||||||
|
} |
||||||
|
|
||||||
|
function _esc_string() { |
||||||
|
echo $(echo "$1" | sed 's_/_\\/_g') |
||||||
|
} |
||||||
|
|
||||||
|
function _run_protoc() { |
||||||
|
local proto_dir=$1 |
||||||
|
local proto_files=$(find $proto_dir -maxdepth 1 -name "*.proto") |
||||||
|
if [[ -z $proto_files ]]; then |
||||||
|
return |
||||||
|
fi |
||||||
|
local protoc_cmd="$PROTOC -I$PROTO_PATH --${PROTOC_GEN}_out=plugins=grpc:${GOPATH}/src ${proto_files}" |
||||||
|
echo $protoc_cmd |
||||||
|
$protoc_cmd |
||||||
|
} |
||||||
|
|
||||||
|
if [[ -z $PROTOC ]]; then |
||||||
|
PROTOC=${DEFAULT_PROTOC} |
||||||
|
which $PROTOC |
||||||
|
if [[ "$?" -ne "0" ]]; then |
||||||
|
_install_protoc |
||||||
|
fi |
||||||
|
fi |
||||||
|
if [[ -z $PROTOC_GEN ]]; then |
||||||
|
PROTOC_GEN=${DEFAULT_PROTOC_GEN} |
||||||
|
which protoc-gen-$PROTOC_GEN |
||||||
|
if [[ "$?" -ne "0" ]]; then |
||||||
|
_install_protoc_gen $PROTOC_GEN |
||||||
|
fi |
||||||
|
fi |
||||||
|
|
||||||
|
KRATOS_DIR=$(_find_kratos_dir $KRATOS_DIR_NAME) |
||||||
|
if [[ "$?" != "0" ]]; then |
||||||
|
echo "can't find kratos directoy" |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
|
||||||
|
KRATOS_PARENT=$(dirname $KRATOS_DIR) |
||||||
|
|
||||||
|
if [[ -z $PROTO_PATH ]]; then |
||||||
|
PROTO_PATH=$GOPATH/src:$KRATOS_PARENT:$USR_INCLUDE_DIR |
||||||
|
else |
||||||
|
PROTO_PATH=$GOPATH/src:$PROTO_PATH:$KRATOS_PARENT:$USR_INCLUDE_DIR |
||||||
|
fi |
||||||
|
|
||||||
|
if [[ ! -z $1 ]]; then |
||||||
|
cd $1 |
||||||
|
fi |
||||||
|
TARGET_DIR=$(pwd) |
||||||
|
|
||||||
|
# switch to $GOPATH/src |
||||||
|
cd $GOPATH/src |
||||||
|
echo "switch workdir to $GOPATH/src" |
||||||
|
|
||||||
|
DIRS=$(find $TARGET_DIR -type d) |
||||||
|
|
||||||
|
for dir in $DIRS; do |
||||||
|
echo "run protoc in $dir" |
||||||
|
_run_protoc $dir |
||||||
|
done |
Loading…
Reference in new issue