""" 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