1*882aa7c7SMatt Gilbride#!/bin/bash -e 2*882aa7c7SMatt Gilbride 3*882aa7c7SMatt Gilbride# Run gapic-generator-java as a protoc plugin. 4*882aa7c7SMatt Gilbride 5*882aa7c7SMatt Gilbride# Usage example here: 6*882aa7c7SMatt Gilbride: << 'EXAMPLE' 7*882aa7c7SMatt Gilbride DIR=~/dev/googleapis/google/showcase/v1beta1 8*882aa7c7SMatt Gilbride ./run.sh --g ~/dev/googleapis --p "$DIR"-s "$DIR/showcase_grpc_service_config.json" 9*882aa7c7SMatt GilbrideEXAMPLE 10*882aa7c7SMatt Gilbride 11*882aa7c7SMatt Gilbridesource gbash.sh 12*882aa7c7SMatt Gilbride 13*882aa7c7SMatt Gilbride# Required flags. 14*882aa7c7SMatt GilbrideDEFINE_string --alias=p protos '' 'Path to the protos to generate.' 15*882aa7c7SMatt GilbrideDEFINE_string --alias=g googleapis '' 'Path to the googleapis directory.' 16*882aa7c7SMatt GilbrideDEFINE_string --alias=s service_config '' 'Path to the JSON service config' 17*882aa7c7SMatt Gilbride 18*882aa7c7SMatt Gilbride# Optional flags. 19*882aa7c7SMatt GilbrideDEFINE_bool --alias=c use_cached false 'If true, does not rebuild the plugin.' 20*882aa7c7SMatt GilbrideDEFINE_string --alias=o out '/tmp/test' 'Output directory' 21*882aa7c7SMatt GilbrideDEFINE_string gapic_config '' 'Path to the config ending in gapic.yaml. Optional' 22*882aa7c7SMatt Gilbride 23*882aa7c7SMatt Gilbridegbash::init_google "$@" 24*882aa7c7SMatt Gilbride 25*882aa7c7SMatt Gilbride# Variables. 26*882aa7c7SMatt GilbridePROTOC_INCLUDE_DIR=/usr/local/include/google/protobuf 27*882aa7c7SMatt Gilbride 28*882aa7c7SMatt Gilbridefunction echo_error { 29*882aa7c7SMatt Gilbride BOLD="\e[1m" 30*882aa7c7SMatt Gilbride UNSET="\e[0m" 31*882aa7c7SMatt Gilbride WHITE="\e[97m" 32*882aa7c7SMatt Gilbride RED="\e[91m" 33*882aa7c7SMatt Gilbride BACK_MAGENTA="\e[45m" 34*882aa7c7SMatt Gilbride BACK_BLUE="\e[44m" 35*882aa7c7SMatt Gilbride BACK_RED="\e[41m" 36*882aa7c7SMatt Gilbride echo -e "$BOLD $BACK_BLUE $WHITE $1 $UNSET" 37*882aa7c7SMatt Gilbride} 38*882aa7c7SMatt Gilbride 39*882aa7c7SMatt Gilbridefunction echo_success { 40*882aa7c7SMatt Gilbride BOLD="\e[1m" 41*882aa7c7SMatt Gilbride UNSET="\e[0m" 42*882aa7c7SMatt Gilbride WHITE="\e[97m" 43*882aa7c7SMatt Gilbride BACK_GREEN="\e[42m" 44*882aa7c7SMatt Gilbride BACK_BLUE="\e[44m" 45*882aa7c7SMatt Gilbride echo -e "$BOLD $BACK_BLUE $WHITE $BACK_GREEN $1 $UNSET" 46*882aa7c7SMatt Gilbride} 47*882aa7c7SMatt Gilbride 48*882aa7c7SMatt Gilbride# Flag check. 49*882aa7c7SMatt Gilbrideif [[ -z "${FLAGS_protos}" ]] 50*882aa7c7SMatt Gilbridethen 51*882aa7c7SMatt Gilbride echo_error "Required flag --protos must be set." 52*882aa7c7SMatt Gilbride exit 1 53*882aa7c7SMatt Gilbridefi 54*882aa7c7SMatt Gilbride 55*882aa7c7SMatt Gilbrideif [[ -z "${FLAGS_googleapis}" ]] 56*882aa7c7SMatt Gilbridethen 57*882aa7c7SMatt Gilbride echo_error "Required flag --googleapis must be set." 58*882aa7c7SMatt Gilbride exit 1 59*882aa7c7SMatt Gilbridefi 60*882aa7c7SMatt Gilbride 61*882aa7c7SMatt Gilbride# Build if needed. 62*882aa7c7SMatt Gilbrideif [[ "${FLAGS_use_cached}" == 0 ]] || [[ ! -f bazel-bin/protoc-gen-java_gapic ]] 63*882aa7c7SMatt Gilbridethen 64*882aa7c7SMatt Gilbride echo_success "Rebuilding the microgenerator..." 65*882aa7c7SMatt Gilbride bazel build :protoc-gen-java_gapic 66*882aa7c7SMatt Gilbride if [[ $? -ne 0 ]] 67*882aa7c7SMatt Gilbride then 68*882aa7c7SMatt Gilbride echo_error "Build failed." 69*882aa7c7SMatt Gilbride exit 1 70*882aa7c7SMatt Gilbride fi 71*882aa7c7SMatt Gilbride 72*882aa7c7SMatt Gilbride echo_success "Done" 73*882aa7c7SMatt Gilbridefi 74*882aa7c7SMatt Gilbride 75*882aa7c7SMatt Gilbride# Key values are synced to rules_java_gapic/java_gapic.bzl. 76*882aa7c7SMatt GilbrideSERVICE_CONFIG_OPT="" 77*882aa7c7SMatt Gilbrideif [ -n "$FLAGS_service_config" ] 78*882aa7c7SMatt Gilbridethen 79*882aa7c7SMatt Gilbride SERVICE_CONFIG_OPT="grpc-service-config=$FLAGS_service_config" 80*882aa7c7SMatt Gilbridefi 81*882aa7c7SMatt Gilbride 82*882aa7c7SMatt GilbrideGAPIC_CONFIG_OPT="" 83*882aa7c7SMatt Gilbrideif [ -n "$FLAGS_gapic_config" ] 84*882aa7c7SMatt Gilbridethen 85*882aa7c7SMatt Gilbride GAPIC_CONFIG_OPT="gapic-config=$FLAGS_gapic_config" 86*882aa7c7SMatt Gilbridefi 87*882aa7c7SMatt Gilbride 88*882aa7c7SMatt Gilbride# Run protoc. 89*882aa7c7SMatt Gilbrideprotoc -I="${PROTOC_INCLUDE_DIR}" -I="${FLAGS_googleapis}" -I="${FLAGS_protos}" \ 90*882aa7c7SMatt Gilbride -I="${FLAGS_googleapis}/google/longrunning" \ 91*882aa7c7SMatt Gilbride --include_source_info \ 92*882aa7c7SMatt Gilbride --plugin=bazel-bin/protoc-gen-java_gapic ${FLAGS_protos}/*.proto \ 93*882aa7c7SMatt Gilbride --java_gapic_out="${FLAGS_out}" \ 94*882aa7c7SMatt Gilbride --java_gapic_opt="${SERVICE_CONFIG_OPT},${GAPIC_CONFIG_OPT}" \ 95*882aa7c7SMatt Gilbride --experimental_allow_proto3_optional 96*882aa7c7SMatt Gilbride 97*882aa7c7SMatt Gilbrideecho_success "Output files written to ${FLAGS_out}" 98