summaryrefslogtreecommitdiff
path: root/third_party/googleapis/google/maps/postprocessing.bzl
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/googleapis/google/maps/postprocessing.bzl')
-rw-r--r--third_party/googleapis/google/maps/postprocessing.bzl58
1 files changed, 58 insertions, 0 deletions
diff --git a/third_party/googleapis/google/maps/postprocessing.bzl b/third_party/googleapis/google/maps/postprocessing.bzl
new file mode 100644
index 0000000..b2a1b7f
--- /dev/null
+++ b/third_party/googleapis/google/maps/postprocessing.bzl
@@ -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