fix(google/maps): Add post-processing rules for Google Maps APIs
PiperOrigin-RevId: 302925222
This commit is contained in:
parent
fd83ab2121
commit
2be23f3f30
|
|
@ -0,0 +1,6 @@
|
|||
package(default_visibility = ["//google/maps:__subpackages__"])
|
||||
|
||||
sh_binary(
|
||||
name = "postprocessing_java",
|
||||
srcs = ["postprocessing_java.sh"],
|
||||
)
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
"""
|
||||
Defines the postprocessing build rule for the Google Maps APIs.
|
||||
"""
|
||||
|
||||
def maps_assembly_pkg(name, srcs, language, visibility = None):
|
||||
"""Target to build a post-processed ads-specific GAPIC assembly package.
|
||||
|
||||
Explodes a GAPIC assembly package, runs language-specific post-processing, and repackages.
|
||||
|
||||
This macro assumes srcs contains in a single input, namely a {{language}}_assembly_pkg target
|
||||
produced by a gapic-generator build target.
|
||||
|
||||
There must be a corresponding postprocessing_{language}.sh script to invoke.
|
||||
|
||||
Args:
|
||||
name: defines the name of the main target
|
||||
srcs: collection containing exactly 1 build target, namely a
|
||||
{{language}}_assembly_pkg target produced by gapic-generator
|
||||
language: the programming language to post-process
|
||||
(e.g., "java", "csharp", "php", etc.); there must be a matching
|
||||
post-processin script of the form `postprocessing_{language}.sh
|
||||
in this package
|
||||
visibility (optional): marco visibility setting;
|
||||
(see https://docs.bazel.build/versions/master/skylark/macros.html)
|
||||
"""
|
||||
cmd = """
|
||||
set -eu
|
||||
|
||||
tar xzf $(SRCS);
|
||||
$(location //google/maps:postprocessing_%s) %s;
|
||||
tar czf $@ %s
|
||||
"""
|
||||
dir_name = _extract_path(srcs)
|
||||
|
||||
native.genrule(
|
||||
name = name,
|
||||
srcs = srcs,
|
||||
outs = ["%s.tar.gz" % name],
|
||||
cmd = cmd % (language, dir_name, dir_name),
|
||||
tools = ["//google/maps:postprocessing_%s" % language],
|
||||
visibility = visibility,
|
||||
)
|
||||
|
||||
def _extract_path(srcs):
|
||||
"""Takes the first label in srcs and returns its target name.
|
||||
|
||||
Args:
|
||||
srcs: a collection of build labels of the form "//package/name:target"
|
||||
|
||||
Returns:
|
||||
The first element's target (i.e.- the part after the ":"), else None if empty.
|
||||
"""
|
||||
|
||||
for s in srcs:
|
||||
toks = s.split(":")
|
||||
if len(toks) == 2:
|
||||
return toks[1]
|
||||
return None
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -eu
|
||||
|
||||
# Performs Maps-specific post-processing on a .tar.gz archive produced by rule
|
||||
# java_gapic_assembly_gradle_pkg
|
||||
|
||||
# Add gradle publish plugin
|
||||
#
|
||||
# Arguments:
|
||||
# postprocess_dir: The directory that contains the Java files to postprocess.
|
||||
add_gradle_publish() {
|
||||
postprocess_dir="${1}"
|
||||
|
||||
for f in $(find "${postprocess_dir}" -mindepth 2 -name build.gradle | sort); do
|
||||
cat >> "$f" <<EOF
|
||||
|
||||
apply from: "./publish.gradle"
|
||||
EOF
|
||||
done
|
||||
echo "INFO: Added gradle publish plugin."
|
||||
}
|
||||
|
||||
# Change group name from cloud
|
||||
#
|
||||
# Arguments:
|
||||
# postprocess_dir: The directory that contains the Java files to postprocess.
|
||||
change_group_from_cloud() {
|
||||
postprocess_dir="${1}"
|
||||
for f in $(find "${postprocess_dir}" -name "*.gradle" -type f); do
|
||||
sed -e "s/= 'com\.google\.cloud'/= 'com\.google\.maps'/g" "${f}" > "${f}.new" && mv "${f}.new" "${f}"
|
||||
done
|
||||
}
|
||||
|
||||
# Main entry point
|
||||
#
|
||||
# Arguments:
|
||||
# postprocess_dir: The directory that contains the Java files to postprocess.
|
||||
main() {
|
||||
postprocess_dir="$1"
|
||||
|
||||
if [ "${postprocess_dir}" = "" ]; then
|
||||
echo "postprocess_dir is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
add_gradle_publish "${postprocess_dir}"
|
||||
change_group_from_cloud "${postprocess_dir}"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
|
@ -8,6 +8,7 @@ package(default_visibility = ["//visibility:public"])
|
|||
##############################################################################
|
||||
load("@rules_proto//proto:defs.bzl", "proto_library")
|
||||
load("@com_google_googleapis_imports//:imports.bzl", "proto_library_with_info")
|
||||
load("//google/maps:postprocessing.bzl", "maps_assembly_pkg")
|
||||
|
||||
proto_library(
|
||||
name = "roads_proto",
|
||||
|
|
@ -79,6 +80,12 @@ java_gapic_assembly_gradle_pkg(
|
|||
],
|
||||
)
|
||||
|
||||
maps_assembly_pkg(
|
||||
name = "google-maps-roads-v1op-java-postprocess",
|
||||
srcs = [":google-maps-roads-v1op-java"],
|
||||
language = "java",
|
||||
)
|
||||
|
||||
##############################################################################
|
||||
# Go
|
||||
##############################################################################
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ package(default_visibility = ["//visibility:public"])
|
|||
##############################################################################
|
||||
load("@rules_proto//proto:defs.bzl", "proto_library")
|
||||
load("@com_google_googleapis_imports//:imports.bzl", "proto_library_with_info")
|
||||
load("//google/maps:postprocessing.bzl", "maps_assembly_pkg")
|
||||
|
||||
proto_library(
|
||||
name = "routes_proto",
|
||||
|
|
@ -97,6 +98,12 @@ java_gapic_assembly_gradle_pkg(
|
|||
],
|
||||
)
|
||||
|
||||
maps_assembly_pkg(
|
||||
name = "google-maps-routes-v1-java-postprocess",
|
||||
srcs = [":google-maps-routes-v1-java"],
|
||||
language = "java",
|
||||
)
|
||||
|
||||
##############################################################################
|
||||
# Go
|
||||
##############################################################################
|
||||
|
|
|
|||
Loading…
Reference in New Issue