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