3bcfe931f9
Now that we have a base docker image that has all our RPC compilation dependencies installed, we can also run the mobile RPC compilation there. This removes the need to install falafel and goimports on the local machine.
51 lines
1.4 KiB
Bash
Executable File
51 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
# generate compiles the *.pb.go stubs from the *.proto files.
|
|
function generate() {
|
|
echo "Generating root gRPC server protos"
|
|
|
|
PROTOS="rpc.proto walletunlocker.proto **/*.proto"
|
|
|
|
# For each of the sub-servers, we then generate their protos, but a restricted
|
|
# set as they don't yet require REST proxies, or swagger docs.
|
|
for file in $PROTOS; do
|
|
DIRECTORY=$(dirname "${file}")
|
|
echo "Generating protos from ${file}, into ${DIRECTORY}"
|
|
|
|
# Generate the protos.
|
|
protoc -I/usr/local/include -I. \
|
|
--go_out=plugins=grpc,paths=source_relative:. \
|
|
"${file}"
|
|
|
|
# Generate the REST reverse proxy.
|
|
protoc -I/usr/local/include -I. \
|
|
--grpc-gateway_out=logtostderr=true,paths=source_relative,grpc_api_configuration=rest-annotations.yaml:. \
|
|
"${file}"
|
|
|
|
|
|
# Finally, generate the swagger file which describes the REST API in detail.
|
|
protoc -I/usr/local/include -I. \
|
|
--swagger_out=logtostderr=true,grpc_api_configuration=rest-annotations.yaml:. \
|
|
"${file}"
|
|
done
|
|
}
|
|
|
|
# format formats the *.proto files with the clang-format utility.
|
|
function format() {
|
|
find . -name "*.proto" -print0 | xargs -0 clang-format --style=file -i
|
|
}
|
|
|
|
# Compile and format the lnrpc package.
|
|
pushd lnrpc
|
|
format
|
|
generate
|
|
popd
|
|
|
|
if [[ "$COMPILE_MOBILE" == "1" ]]; then
|
|
pushd mobile
|
|
./gen_bindings.sh $FALAFEL_VERSION
|
|
popd
|
|
fi
|