2020-04-07 11:29:14 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2020-04-07 18:26:57 +00:00
|
|
|
# check pb dir
|
|
|
|
pb_dir="$(cd "$(dirname $0)";pwd)/../pb"
|
|
|
|
if [ ! -d $pb_dir ]; then
|
|
|
|
echo "pb dir $pb_dir does not exist in grpc folder"
|
|
|
|
exit
|
|
|
|
fi
|
|
|
|
cd $pb_dir
|
2020-04-07 11:29:14 +00:00
|
|
|
|
2020-04-07 18:26:57 +00:00
|
|
|
# check protoc
|
|
|
|
which protoc > /dev/null
|
|
|
|
if [ $? -ne 0 ];then
|
|
|
|
echo "missing protoc" && exit
|
|
|
|
fi
|
|
|
|
|
|
|
|
gen_dir="$pb_dir/../gen"
|
|
|
|
pb_files="bdware/bdledger/api/*.proto"
|
2020-11-16 16:43:10 +00:00
|
|
|
emptypb_file="google/protobuf/empty.proto"
|
2020-04-07 18:26:57 +00:00
|
|
|
|
2020-11-16 16:43:10 +00:00
|
|
|
cmd=protoc
|
2020-04-07 18:26:57 +00:00
|
|
|
async_tag=""
|
|
|
|
|
|
|
|
# check all arguments
|
|
|
|
for aug in $@
|
|
|
|
do
|
|
|
|
if [ $aug == "-a" ]; then
|
|
|
|
async_tag="&"
|
|
|
|
fi
|
|
|
|
if [ $aug == "--async" ]; then
|
|
|
|
async_tag="&"
|
|
|
|
fi
|
|
|
|
if [ $aug == "go" ]; then
|
|
|
|
plugin=protoc-gen-go
|
|
|
|
which $plugin > /dev/null
|
|
|
|
if [ $? -ne 0 ];then
|
|
|
|
echo "missing plugin: $plugin" && exit
|
|
|
|
fi
|
2020-06-16 07:12:53 +00:00
|
|
|
vplugin=protoc-gen-govalidators
|
|
|
|
which $vplugin > /dev/null
|
|
|
|
if [ $? -ne 0 ];then
|
|
|
|
echo "missing plugin: $vplugin" && exit
|
|
|
|
fi
|
2020-04-07 18:26:57 +00:00
|
|
|
out="$gen_dir/go"
|
|
|
|
if [ ! -d $out ]; then
|
|
|
|
mkdir -p $out
|
|
|
|
fi
|
|
|
|
echo "Generating Go code"
|
2020-11-16 16:43:10 +00:00
|
|
|
$cmd \
|
|
|
|
--go_out=$out \
|
|
|
|
--go-grpc_out=$out \
|
|
|
|
$pb_files \
|
|
|
|
$async_tag
|
2020-04-07 18:26:57 +00:00
|
|
|
fi
|
2020-06-08 09:24:03 +00:00
|
|
|
if [ $aug == "gohttp" ]; then
|
|
|
|
plugin=protoc-gen-grpc-gateway
|
|
|
|
which $plugin > /dev/null
|
|
|
|
if [ $? -ne 0 ];then
|
|
|
|
echo "missing plugin: $plugin" && exit
|
|
|
|
fi
|
|
|
|
out="$gen_dir/go"
|
|
|
|
if [ ! -d $out ]; then
|
|
|
|
mkdir -p $out
|
|
|
|
fi
|
|
|
|
echo "Generating Go HTTP code"
|
2020-11-16 16:43:10 +00:00
|
|
|
$cmd \
|
2020-12-05 03:11:36 +00:00
|
|
|
--grpc-gateway_out $out \
|
|
|
|
--grpc-gateway_opt grpc_api_configuration=bdware/bdledger/api/grpc-gateway.yml \
|
|
|
|
--grpc-gateway_opt logtostderr=true \
|
|
|
|
--openapiv2_out ../../docs/openapiv2 \
|
2021-02-12 13:10:12 +00:00
|
|
|
--openapiv2_opt grpc_api_configuration=bdware/bdledger/api/grpc-gateway.yml \
|
2020-12-05 03:11:36 +00:00
|
|
|
--openapiv2_opt logtostderr=true \
|
2020-11-16 16:43:10 +00:00
|
|
|
$pb_files \
|
|
|
|
$async_tag
|
2020-06-08 09:24:03 +00:00
|
|
|
fi
|
2020-04-07 18:26:57 +00:00
|
|
|
if [ $aug == "nodejs" ]; then
|
2020-11-16 16:43:10 +00:00
|
|
|
npmBinPath=$(npm bin)
|
|
|
|
jsCmd=$npmBinPath/grpc_tools_node_protoc
|
|
|
|
pluginPath=$npmBinPath/protoc-gen-ts
|
|
|
|
out="$gen_dir/nodejs"
|
|
|
|
if [ ! -d $out ]; then
|
|
|
|
mkdir -p $out
|
|
|
|
fi
|
|
|
|
echo "Generating Node.js code & TypeScript definitions"
|
|
|
|
$jsCmd \
|
|
|
|
--plugin=protoc-gen-ts=$pluginPath \
|
|
|
|
--js_out=import_style=commonjs,binary:$out \
|
|
|
|
--grpc_out=grpc_js:$out \
|
|
|
|
--ts_out=grpc_js:$out \
|
|
|
|
$pb_files $emptypb_file \
|
|
|
|
$async_tag
|
2020-04-07 18:26:57 +00:00
|
|
|
fi
|
|
|
|
if [ $aug == "docs" ]; then
|
|
|
|
plugin=protoc-gen-ts
|
|
|
|
plugin_path=$(which $plugin)
|
|
|
|
if [ $? -ne 0 ];then
|
|
|
|
echo "missing plugin: $plugin" && exit
|
|
|
|
fi
|
|
|
|
out="$pb_dir/../../docs"
|
|
|
|
if [ ! -d $out ]; then
|
|
|
|
mkdir -p $out
|
|
|
|
fi
|
|
|
|
echo "Generating documentations"
|
2020-11-16 16:43:10 +00:00
|
|
|
$cmd \
|
|
|
|
--doc_out=$out \
|
|
|
|
--doc_opt=html,apis.html \
|
|
|
|
$pb_files $emptypb_file \
|
|
|
|
$async_tag
|
|
|
|
$cmd \
|
|
|
|
--doc_out=$out \
|
|
|
|
--doc_opt=markdown,apis.md \
|
|
|
|
$pb_files $emptypb_file \
|
|
|
|
$async_tag
|
|
|
|
$cmd \
|
|
|
|
--doc_out=$out \
|
|
|
|
--doc_opt=json,apis.json \
|
|
|
|
$pb_files $emptypb_file \
|
|
|
|
$async_tag
|
2020-04-07 18:26:57 +00:00
|
|
|
fi
|
2020-11-16 16:43:10 +00:00
|
|
|
done
|