| #!/bin/bash -e | |
| # Run gapic-generator-java as a protoc plugin. | |
| # Usage example here: | |
| : << 'EXAMPLE' | |
| DIR=~/dev/googleapis/google/showcase/v1beta1 | |
| ./run.sh --g ~/dev/googleapis --p "$DIR"-s "$DIR/showcase_grpc_service_config.json" | |
| EXAMPLE | |
| source gbash.sh | |
| # Required flags. | |
| DEFINE_string --alias=p protos '' 'Path to the protos to generate.' | |
| DEFINE_string --alias=g googleapis '' 'Path to the googleapis directory.' | |
| DEFINE_string --alias=s service_config '' 'Path to the JSON service config' | |
| # Optional flags. | |
| DEFINE_bool --alias=c use_cached false 'If true, does not rebuild the plugin.' | |
| DEFINE_string --alias=o out '/tmp/test' 'Output directory' | |
| DEFINE_string gapic_config '' 'Path to the config ending in gapic.yaml. Optional' | |
| gbash::init_google "$@" | |
| # Variables. | |
| PROTOC_INCLUDE_DIR=/usr/local/include/google/protobuf | |
| function echo_error { | |
| BOLD="\e[1m" | |
| UNSET="\e[0m" | |
| WHITE="\e[97m" | |
| RED="\e[91m" | |
| BACK_MAGENTA="\e[45m" | |
| BACK_BLUE="\e[44m" | |
| BACK_RED="\e[41m" | |
| echo -e "$BOLD $BACK_BLUE $WHITE $1 $UNSET" | |
| } | |
| function echo_success { | |
| BOLD="\e[1m" | |
| UNSET="\e[0m" | |
| WHITE="\e[97m" | |
| BACK_GREEN="\e[42m" | |
| BACK_BLUE="\e[44m" | |
| echo -e "$BOLD $BACK_BLUE $WHITE $BACK_GREEN $1 $UNSET" | |
| } | |
| # Flag check. | |
| if [[ -z "${FLAGS_protos}" ]] | |
| then | |
| echo_error "Required flag --protos must be set." | |
| exit 1 | |
| fi | |
| if [[ -z "${FLAGS_googleapis}" ]] | |
| then | |
| echo_error "Required flag --googleapis must be set." | |
| exit 1 | |
| fi | |
| # Build if needed. | |
| if [[ "${FLAGS_use_cached}" == 0 ]] || [[ ! -f bazel-bin/protoc-gen-java_gapic ]] | |
| then | |
| echo_success "Rebuilding the microgenerator..." | |
| bazel build :protoc-gen-java_gapic | |
| if [[ $? -ne 0 ]] | |
| then | |
| echo_error "Build failed." | |
| exit 1 | |
| fi | |
| echo_success "Done" | |
| fi | |
| # Key values are synced to rules_java_gapic/java_gapic.bzl. | |
| SERVICE_CONFIG_OPT="" | |
| if [ -n "$FLAGS_service_config" ] | |
| then | |
| SERVICE_CONFIG_OPT="grpc-service-config=$FLAGS_service_config" | |
| fi | |
| GAPIC_CONFIG_OPT="" | |
| if [ -n "$FLAGS_gapic_config" ] | |
| then | |
| GAPIC_CONFIG_OPT="gapic-config=$FLAGS_gapic_config" | |
| fi | |
| # Run protoc. | |
| protoc -I="${PROTOC_INCLUDE_DIR}" -I="${FLAGS_googleapis}" -I="${FLAGS_protos}" \ | |
| -I="${FLAGS_googleapis}/google/longrunning" \ | |
| --include_source_info \ | |
| --plugin=bazel-bin/protoc-gen-java_gapic ${FLAGS_protos}/*.proto \ | |
| --java_gapic_out="${FLAGS_out}" \ | |
| --java_gapic_opt="${SERVICE_CONFIG_OPT},${GAPIC_CONFIG_OPT}" \ | |
| --experimental_allow_proto3_optional | |
| echo_success "Output files written to ${FLAGS_out}" |