| #!/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}" |