github.com/Finschia/finschia-sdk@v0.48.1/scripts/protoc-swagger-gen.sh (about) 1 #!/usr/bin/env bash 2 3 set -eo pipefail 4 5 mkdir -p ./tmp-swagger-gen 6 proto_dirs=$(find ./proto -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) 7 for dir in $proto_dirs; do 8 9 # generate swagger files (filter query files) 10 query_file=$(find "${dir}" -maxdepth 1 \( -name 'query.proto' -o -name 'service.proto' \)) 11 if [[ ! -z "$query_file" ]]; then 12 buf protoc \ 13 -I "proto" \ 14 -I "third_party/proto" \ 15 "$query_file" \ 16 --swagger_out=./tmp-swagger-gen \ 17 --swagger_opt=logtostderr=true --swagger_opt=fqn_for_swagger_name=true --swagger_opt=simple_operation_ids=true 18 fi 19 done 20 21 # combine swagger files 22 # uses nodejs package `swagger-combine`. 23 # all the individual swagger files need to be configured in `config.json` for merging 24 swagger-combine ./client/docs/config.json -o ./client/docs/swagger-ui/swagger.yaml -f yaml --continueOnConflictingPaths true --includeDefinitions true 25 26 # clean swagger files 27 rm -rf ./tmp-swagger-gen