87 lines
2.4 KiB
Bash
Executable File
87 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# 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
|
|
|
|
# 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"
|
|
empty_file="google/protobuf/empty.proto"
|
|
|
|
exec=protoc
|
|
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
|
|
out="$gen_dir/go"
|
|
if [ ! -d $out ]; then
|
|
mkdir -p $out
|
|
fi
|
|
echo "Generating Go code"
|
|
$exec --go_out=plugins=grpc:$out $pb_files $async_tag
|
|
fi
|
|
if [ $aug == "nodejs" ]; then
|
|
plugin=grpc_tools_node_protoc_plugin
|
|
plugin_path=$(which $plugin)
|
|
if [ $? -ne 0 ];then
|
|
echo "missing plugin: $plugin" && exit
|
|
fi
|
|
out="$gen_dir/nodejs"
|
|
if [ ! -d $out ]; then
|
|
mkdir -p $out
|
|
fi
|
|
echo "Generating Node.js code"
|
|
$exec --js_out=import_style=commonjs,binary:$out --grpc_out=$out --plugin=protoc-gen-grpc=$plugin_path $pb_files $empty_file $async_tag
|
|
fi
|
|
if [ $aug == "ts" ]; then
|
|
plugin=protoc-gen-ts
|
|
plugin_path=$(which $plugin)
|
|
if [ $? -ne 0 ];then
|
|
echo "missing plugin: $plugin" && exit
|
|
fi
|
|
out="$gen_dir/nodejs"
|
|
if [ ! -d $out ]; then
|
|
mkdir -p $out
|
|
fi
|
|
echo "Generating TypeScript code"
|
|
$exec --ts_out=$out -plugin=protoc-gen-ts=$plugin_path $pb_files $empty_file $async_tag
|
|
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"
|
|
$exec --doc_out=$out --doc_opt=html,apis.html $pb_files $empty_file $async_tag
|
|
$exec --doc_out=$out --doc_opt=markdown,apis.md $pb_files $empty_file $async_tag
|
|
$exec --doc_out=$out --doc_opt=json,apis.json $pb_files $empty_file $async_tag
|
|
fi
|
|
done |