19f7670a5b
Because we compile the REST code from the rest-annotations.yaml and no longer import the annotations in the proto files, we don't need to specify the custom import path anymore.
89 lines
2.4 KiB
Bash
Executable File
89 lines
2.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
mkdir -p build
|
|
|
|
# Check falafel version.
|
|
falafelVersion=$1
|
|
if [ -z $falafelVersion ]
|
|
then
|
|
echo "falafel version not set"
|
|
exit 1
|
|
fi
|
|
|
|
falafel=$(which falafel)
|
|
if [ $falafel ]
|
|
then
|
|
version="v$($falafel -v)"
|
|
if [ $version != $falafelVersion ]
|
|
then
|
|
echo "falafel version $falafelVersion required"
|
|
exit 1
|
|
fi
|
|
echo "Using plugin $falafel $version"
|
|
else
|
|
echo "falafel not found"
|
|
exit 1
|
|
fi
|
|
|
|
# Name of the package for the generated APIs.
|
|
pkg="lndmobile"
|
|
|
|
# The package where the protobuf definitions originally are found.
|
|
target_pkg="github.com/lightningnetwork/lnd/lnrpc"
|
|
|
|
# A mapping from grpc service to name of the custom listeners. The grpc server
|
|
# must be configured to listen on these.
|
|
listeners="lightning=lightningLis walletunlocker=walletUnlockerLis"
|
|
|
|
# Set to 1 to create boiler plate grpc client code and listeners. If more than
|
|
# one proto file is being parsed, it should only be done once.
|
|
mem_rpc=1
|
|
|
|
PROTOS="rpc.proto walletunlocker.proto"
|
|
|
|
opts="package_name=$pkg,target_package=$target_pkg,listeners=$listeners,mem_rpc=$mem_rpc"
|
|
|
|
for file in $PROTOS; do
|
|
echo "Generating mobile protos from ${file}"
|
|
|
|
protoc -I/usr/local/include -I. \
|
|
--plugin=protoc-gen-custom=$falafel\
|
|
--custom_out=./build \
|
|
--custom_opt="$opts" \
|
|
--proto_path=../lnrpc \
|
|
"${file}"
|
|
done
|
|
|
|
# If prefix=1 is specified, prefix the generated methods with subserver name.
|
|
# This must be enabled to support subservers with name conflicts.
|
|
use_prefix="0"
|
|
if [ "$prefix" = "1" ]
|
|
then
|
|
echo "Prefixing methods with subserver name"
|
|
use_prefix="1"
|
|
fi
|
|
|
|
# Find all subservers.
|
|
for file in ../lnrpc/**/*.proto
|
|
do
|
|
DIRECTORY=$(dirname ${file})
|
|
tag=$(basename ${DIRECTORY})
|
|
build_tags="// +build $tag"
|
|
lis="lightningLis"
|
|
|
|
opts="package_name=$pkg,target_package=$target_pkg/$tag,build_tags=$build_tags,api_prefix=$use_prefix,defaultlistener=$lis"
|
|
|
|
echo "Generating mobile protos from ${file}, with build tag ${tag}"
|
|
|
|
protoc -I/usr/local/include -I. \
|
|
-I../lnrpc \
|
|
--plugin=protoc-gen-custom=$falafel \
|
|
--custom_out=./build \
|
|
--custom_opt="$opts" \
|
|
--proto_path=${DIRECTORY} \
|
|
${file}
|
|
done
|
|
|
|
# Run goimports to resolve any dependencies among the sub-servers.
|
|
goimports -w ./*_generated.go
|