xref: /aosp_15_r20/external/googleapis/google/maps/postprocessing.bzl (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1*d5c09012SAndroid Build Coastguard Worker"""
2*d5c09012SAndroid Build Coastguard WorkerDefines the postprocessing build rule for the Google Maps APIs.
3*d5c09012SAndroid Build Coastguard Worker"""
4*d5c09012SAndroid Build Coastguard Worker
5*d5c09012SAndroid Build Coastguard Workerdef maps_assembly_pkg(name, srcs, language, visibility = None):
6*d5c09012SAndroid Build Coastguard Worker    """Target to build a post-processed ads-specific GAPIC assembly package.
7*d5c09012SAndroid Build Coastguard Worker
8*d5c09012SAndroid Build Coastguard Worker    Explodes a GAPIC assembly package, runs language-specific post-processing, and repackages.
9*d5c09012SAndroid Build Coastguard Worker
10*d5c09012SAndroid Build Coastguard Worker    This macro assumes srcs contains in a single input, namely a {{language}}_assembly_pkg target
11*d5c09012SAndroid Build Coastguard Worker    produced by a gapic-generator build target.
12*d5c09012SAndroid Build Coastguard Worker
13*d5c09012SAndroid Build Coastguard Worker    There must be a corresponding postprocessing_{language}.sh script to invoke.
14*d5c09012SAndroid Build Coastguard Worker
15*d5c09012SAndroid Build Coastguard Worker    Args:
16*d5c09012SAndroid Build Coastguard Worker      name: defines the name of the main target
17*d5c09012SAndroid Build Coastguard Worker      srcs: collection containing exactly 1 build target, namely a
18*d5c09012SAndroid Build Coastguard Worker        {{language}}_assembly_pkg target produced by gapic-generator
19*d5c09012SAndroid Build Coastguard Worker      language: the programming language to post-process
20*d5c09012SAndroid Build Coastguard Worker        (e.g., "java", "csharp", "php", etc.); there must be a matching
21*d5c09012SAndroid Build Coastguard Worker        post-processin script of the form `postprocessing_{language}.sh
22*d5c09012SAndroid Build Coastguard Worker        in this package
23*d5c09012SAndroid Build Coastguard Worker      visibility (optional): marco visibility setting;
24*d5c09012SAndroid Build Coastguard Worker        (see https://docs.bazel.build/versions/master/skylark/macros.html)
25*d5c09012SAndroid Build Coastguard Worker    """
26*d5c09012SAndroid Build Coastguard Worker    cmd = """
27*d5c09012SAndroid Build Coastguard Worker    set -eu
28*d5c09012SAndroid Build Coastguard Worker
29*d5c09012SAndroid Build Coastguard Worker    tar xzf $(SRCS);
30*d5c09012SAndroid Build Coastguard Worker    $(location //google/maps:postprocessing_%s) %s;
31*d5c09012SAndroid Build Coastguard Worker    tar czf $@ %s
32*d5c09012SAndroid Build Coastguard Worker    """
33*d5c09012SAndroid Build Coastguard Worker    dir_name = _extract_path(srcs)
34*d5c09012SAndroid Build Coastguard Worker
35*d5c09012SAndroid Build Coastguard Worker    native.genrule(
36*d5c09012SAndroid Build Coastguard Worker        name = name,
37*d5c09012SAndroid Build Coastguard Worker        srcs = srcs,
38*d5c09012SAndroid Build Coastguard Worker        outs = ["%s.tar.gz" % name],
39*d5c09012SAndroid Build Coastguard Worker        cmd = cmd % (language, dir_name, dir_name),
40*d5c09012SAndroid Build Coastguard Worker        tools = ["//google/maps:postprocessing_%s" % language],
41*d5c09012SAndroid Build Coastguard Worker        visibility = visibility,
42*d5c09012SAndroid Build Coastguard Worker    )
43*d5c09012SAndroid Build Coastguard Worker
44*d5c09012SAndroid Build Coastguard Workerdef _extract_path(srcs):
45*d5c09012SAndroid Build Coastguard Worker    """Takes the first label in srcs and returns its target name.
46*d5c09012SAndroid Build Coastguard Worker
47*d5c09012SAndroid Build Coastguard Worker    Args:
48*d5c09012SAndroid Build Coastguard Worker      srcs: a collection of build labels of the form "//package/name:target"
49*d5c09012SAndroid Build Coastguard Worker
50*d5c09012SAndroid Build Coastguard Worker    Returns:
51*d5c09012SAndroid Build Coastguard Worker      The first element's target (i.e.- the part after the ":"), else None if empty.
52*d5c09012SAndroid Build Coastguard Worker    """
53*d5c09012SAndroid Build Coastguard Worker
54*d5c09012SAndroid Build Coastguard Worker    for s in srcs:
55*d5c09012SAndroid Build Coastguard Worker        toks = s.split(":")
56*d5c09012SAndroid Build Coastguard Worker        if len(toks) == 2:
57*d5c09012SAndroid Build Coastguard Worker            return toks[1]
58*d5c09012SAndroid Build Coastguard Worker    return None
59