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