-
Notifications
You must be signed in to change notification settings - Fork 59
/
Copy pathgenerate_showcase.sh
executable file
·129 lines (120 loc) · 5.19 KB
/
generate_showcase.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/bin/bash
# Generates showcase without post processing (i.e. raw gapic, grpc and proto
# libraries). It will compute the showcase version from
# `sdk-platform-java/showcase/gapic-showcase/pom.xml`. The generator version is
# inferred from versions.txt
set -ex
readonly SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
readonly LIB_GEN_SCRIPTS_DIR="${SCRIPT_DIR}/../../hermetic_build/library_generation/"
source "${LIB_GEN_SCRIPTS_DIR}/tests/test_utilities.sh"
source "${LIB_GEN_SCRIPTS_DIR}/utils/utilities.sh"
readonly perform_cleanup=$1
cd "${SCRIPT_DIR}"
mkdir -p "${SCRIPT_DIR}/output"
get_version_from_pom() {
target_pom="$1"
key="$2"
# prints the result to stdout
grep -e "<${key}>" "${target_pom}" | cut -d'>' -f2 | cut -d'<' -f1
}
# gets the latest version of the specified artifact from versions.txt
get_version_from_versions_txt() {
readonly VERSIONS_TXT_PATH="${SCRIPT_DIR}/../../versions.txt"
target_artifact="$1"
# prints the result to stdout
grep -e "${target_artifact}" "${VERSIONS_TXT_PATH}" | cut -d: -f3
}
# clone gapic-showcase
if [ ! -d schema ]; then
if [ -d gapic-showcase ]; then
rm -rdf gapic-showcase
fi
# looks at sdk-platform-java/showcase/gapic-showcase/pom.xml to extract the
# version of gapic-showcase
# see https://github.com/googleapis/gapic-showcase/releases
showcase_version=$(get_version_from_pom \
"${SCRIPT_DIR}/../gapic-showcase/pom.xml" "gapic-showcase.version"
)
sparse_clone https://github.com/googleapis/gapic-showcase.git "schema/google/showcase/v1beta1" "v${showcase_version}"
cd gapic-showcase
mv schema ../output
cd ..
rm -rdf gapic-showcase
fi
if [ ! -d google ];then
if [ -d googleapis ]; then
rm -rdf googleapis
fi
sparse_clone https://github.com/googleapis/googleapis.git "WORKSPACE google/api google/rpc google/cloud/common_resources.proto google/longrunning google/iam/v1 google/cloud/location google/type"
mv googleapis/google output
rm -rdf googleapis
fi
# copy the generator and formatter into its well-known location.
# For more details,
# refer to library_generation/DEVELOPMENT.md
java_formatter_name="google-java-format.jar"
java_formatter_version="1.7"
well_known_folder="${HOME}/.library_generation"
well_known_generator_jar_location="${well_known_folder}/gapic-generator-java.jar"
well_known_formatter_jar_location="${well_known_folder}/${java_formatter_name}"
if [[ ! -d "${well_known_folder}" ]]; then
mkdir "${well_known_folder}"
fi
if [[ -f "${well_known_generator_jar_location}" ]]; then
echo "replacing well-known generator jar with the latest one"
rm "${well_known_generator_jar_location}"
fi
if [[ -f "${well_known_formatter_jar_location}" ]]; then
echo "replacing well-known formatter jar with the latest one"
rm "${well_known_formatter_jar_location}"
fi
maven_repository="$(mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout)"
generator_version=$(get_version_from_versions_txt "gapic-generator-java")
generator_jar_path="${maven_repository}/com/google/api/gapic-generator-java/${generator_version}/gapic-generator-java-${generator_version}.jar"
if [[ ! -f "${generator_jar_path}" ]]; then
echo "generator jar not found in its assumed location"
echo "in the local repository: ${generator_jar_path}"
echo "(did you run mvn install in this repository's root?)"
exit 1
fi
# transfer the snapshot jar into its well-known location
cp "${generator_jar_path}" "${well_known_generator_jar_location}"
# transfer java formatter to its well-known location
download_from \
"https://maven-central.storage-download.googleapis.com/maven2/com/google/googlejavaformat/google-java-format/${java_formatter_version}/google-java-format-${java_formatter_version}-all-deps.jar" \
"${java_formatter_name}"
cp "${java_formatter_name}" "${well_known_formatter_jar_location}"
gapic_additional_protos="google/iam/v1/iam_policy.proto google/cloud/location/locations.proto"
path_to_generator_parent_pom="${SCRIPT_DIR}/../../gapic-generator-java-pom-parent/pom.xml"
protoc_version=$(get_version_from_pom "${path_to_generator_parent_pom}" "protobuf.version" \
| cut -d. -f2-)
download_protoc "${protoc_version}" "linux-x86_64"
mv "bin" "include" "${well_known_folder}"
grpc_version=$(get_version_from_pom "${path_to_generator_parent_pom}" "grpc.version")
download_grpc_plugin "${grpc_version}" "linux-x86_64"
mv "protoc-gen-grpc-java.exe" "${well_known_folder}"
rest_numeric_enums="false"
transport="grpc+rest"
gapic_yaml=""
service_config="schema/google/showcase/v1beta1/showcase_grpc_service_config.json"
service_yaml="schema/google/showcase/v1beta1/showcase_v1beta1.yaml"
include_samples="false"
rm -rdf output/showcase-output
mkdir output/showcase-output
set +e
bash "${SCRIPT_DIR}/../../hermetic_build/library_generation/generate_library.sh" \
--proto_path "schema/google/showcase/v1beta1" \
--destination_path "showcase-output" \
--gapic_additional_protos "${gapic_additional_protos}" \
--rest_numeric_enums "${rest_numeric_enums}" \
--gapic_yaml "${gapic_yaml}" \
--service_config "${service_config}" \
--service_yaml "${service_yaml}" \
--include_samples "${include_samples}" \
--transport "${transport}"
exit_code=$?
if [ "${exit_code}" -ne 0 ]; then
rm -rdf output
exit "${exit_code}"
fi
set +x