xref: /aosp_15_r20/external/sdk-platform-java/run.sh (revision 882aa7c72c3cd3b66e72a261bdd69b93f7de7670)
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