1*d5c09012SAndroid Build Coastguard Worker"""Repository rules and macros which are expected to be called from WORKSPACE file of either 2*d5c09012SAndroid Build Coastguard Workergoogleapis itself or any third_party repository which consumes googleapis as its dependency. 3*d5c09012SAndroid Build Coastguard Worker""" 4*d5c09012SAndroid Build Coastguard Worker 5*d5c09012SAndroid Build Coastguard Workerdef _switched_rules_impl(ctx): 6*d5c09012SAndroid Build Coastguard Worker disabled_rule_script = """ 7*d5c09012SAndroid Build Coastguard Workerdef {rule_name}(**kwargs): 8*d5c09012SAndroid Build Coastguard Worker pass 9*d5c09012SAndroid Build Coastguard Worker""" 10*d5c09012SAndroid Build Coastguard Worker enabled_native_rule_script = """ 11*d5c09012SAndroid Build Coastguard Worker{rule_name} = {native_rule_name} 12*d5c09012SAndroid Build Coastguard Worker""" 13*d5c09012SAndroid Build Coastguard Worker enabled_rule_script = """ 14*d5c09012SAndroid Build Coastguard Workerload("{file_label}", _{rule_name} = "{loaded_rule_name}") 15*d5c09012SAndroid Build Coastguard Worker""" 16*d5c09012SAndroid Build Coastguard Worker elabled_rule_scrip_alias = """ 17*d5c09012SAndroid Build Coastguard Worker{rule_name} = _{rule_name} 18*d5c09012SAndroid Build Coastguard Worker""" 19*d5c09012SAndroid Build Coastguard Worker load_rules = [] # load() must go before everythin else in .bzl files since Bazel 0.25.0 20*d5c09012SAndroid Build Coastguard Worker rules = [] 21*d5c09012SAndroid Build Coastguard Worker 22*d5c09012SAndroid Build Coastguard Worker for rule_name, value_and_name in ctx.attr.rules.items(): 23*d5c09012SAndroid Build Coastguard Worker value = value_and_name[0] 24*d5c09012SAndroid Build Coastguard Worker loaded_rule_name = value_and_name[1] if value_and_name[1] else rule_name 25*d5c09012SAndroid Build Coastguard Worker 26*d5c09012SAndroid Build Coastguard Worker if not value: 27*d5c09012SAndroid Build Coastguard Worker rules.append(disabled_rule_script.format(rule_name = rule_name)) 28*d5c09012SAndroid Build Coastguard Worker elif value.startswith("@"): 29*d5c09012SAndroid Build Coastguard Worker load_rules.append(enabled_rule_script.format( 30*d5c09012SAndroid Build Coastguard Worker file_label = value, 31*d5c09012SAndroid Build Coastguard Worker rule_name = rule_name, 32*d5c09012SAndroid Build Coastguard Worker loaded_rule_name = loaded_rule_name, 33*d5c09012SAndroid Build Coastguard Worker )) 34*d5c09012SAndroid Build Coastguard Worker rules.append(elabled_rule_scrip_alias.format(rule_name = rule_name)) 35*d5c09012SAndroid Build Coastguard Worker elif value.startswith("native."): 36*d5c09012SAndroid Build Coastguard Worker rules.append( 37*d5c09012SAndroid Build Coastguard Worker enabled_native_rule_script.format(rule_name = rule_name, native_rule_name = value), 38*d5c09012SAndroid Build Coastguard Worker ) 39*d5c09012SAndroid Build Coastguard Worker else: 40*d5c09012SAndroid Build Coastguard Worker rules.append(value) 41*d5c09012SAndroid Build Coastguard Worker 42*d5c09012SAndroid Build Coastguard Worker ctx.file("BUILD.bazel", "") 43*d5c09012SAndroid Build Coastguard Worker ctx.file("imports.bzl", "".join(load_rules + rules)) 44*d5c09012SAndroid Build Coastguard Worker 45*d5c09012SAndroid Build Coastguard Workerswitched_rules = repository_rule( 46*d5c09012SAndroid Build Coastguard Worker implementation = _switched_rules_impl, 47*d5c09012SAndroid Build Coastguard Worker attrs = { 48*d5c09012SAndroid Build Coastguard Worker "rules": attr.string_list_dict( 49*d5c09012SAndroid Build Coastguard Worker allow_empty = True, 50*d5c09012SAndroid Build Coastguard Worker mandatory = False, 51*d5c09012SAndroid Build Coastguard Worker default = {}, 52*d5c09012SAndroid Build Coastguard Worker ), 53*d5c09012SAndroid Build Coastguard Worker }, 54*d5c09012SAndroid Build Coastguard Worker) 55*d5c09012SAndroid Build Coastguard Worker 56*d5c09012SAndroid Build Coastguard Workerdef switched_rules_by_language( 57*d5c09012SAndroid Build Coastguard Worker name, 58*d5c09012SAndroid Build Coastguard Worker gapic = False, 59*d5c09012SAndroid Build Coastguard Worker grpc = False, 60*d5c09012SAndroid Build Coastguard Worker java = False, 61*d5c09012SAndroid Build Coastguard Worker go = False, 62*d5c09012SAndroid Build Coastguard Worker cc = False, 63*d5c09012SAndroid Build Coastguard Worker php = False, 64*d5c09012SAndroid Build Coastguard Worker nodejs = False, 65*d5c09012SAndroid Build Coastguard Worker python = False, 66*d5c09012SAndroid Build Coastguard Worker ruby = False, 67*d5c09012SAndroid Build Coastguard Worker csharp = False, 68*d5c09012SAndroid Build Coastguard Worker go_test = False, 69*d5c09012SAndroid Build Coastguard Worker rules_override = {}): 70*d5c09012SAndroid Build Coastguard Worker """Switches rules in the generated imports.bzl between no-op and the actual implementation. 71*d5c09012SAndroid Build Coastguard Worker 72*d5c09012SAndroid Build Coastguard Worker This defines which language-specific rules (or client type specific, like grpc or gapic) should 73*d5c09012SAndroid Build Coastguard Worker be enabled during the build. All non-enabled language-specific rules will default to no-op 74*d5c09012SAndroid Build Coastguard Worker implementations. Examples of the language-specific rules are: java_gapic_library 75*d5c09012SAndroid Build Coastguard Worker (Java-specific), go_proto_library (Go-specific), proto_library_with_info (gapic-specific) etc. 76*d5c09012SAndroid Build Coastguard Worker Note, proto_library rule is always enabled. 77*d5c09012SAndroid Build Coastguard Worker 78*d5c09012SAndroid Build Coastguard Worker For example, to use this rule and enable Java and Go rules, add the following in the external 79*d5c09012SAndroid Build Coastguard Worker repository which imports com_google_googleapis repository and its corresponding dependencies: 80*d5c09012SAndroid Build Coastguard Worker 81*d5c09012SAndroid Build Coastguard Worker load("@com_google_googleapis//:repository_rules.bzl", "switched_rules_by_language") 82*d5c09012SAndroid Build Coastguard Worker 83*d5c09012SAndroid Build Coastguard Worker switched_rules_by_language( 84*d5c09012SAndroid Build Coastguard Worker name = "com_google_googleapis_imports", 85*d5c09012SAndroid Build Coastguard Worker grpc = True, 86*d5c09012SAndroid Build Coastguard Worker gapic = True, 87*d5c09012SAndroid Build Coastguard Worker go = True, 88*d5c09012SAndroid Build Coastguard Worker java = True, 89*d5c09012SAndroid Build Coastguard Worker ) 90*d5c09012SAndroid Build Coastguard Worker 91*d5c09012SAndroid Build Coastguard Worker Note, for build to work you should also import the language-specific transitive dependencies. 92*d5c09012SAndroid Build Coastguard Worker 93*d5c09012SAndroid Build Coastguard Worker Args: 94*d5c09012SAndroid Build Coastguard Worker name (str): name of a target, is expected to be "com_google_googleapis_imports". 95*d5c09012SAndroid Build Coastguard Worker gapic (bool): Enable GAPIC specific rules. The GAPIC rules are also language-specific, so 96*d5c09012SAndroid Build Coastguard Worker the actual enabled rules will be determined by the other language-specific arguments of 97*d5c09012SAndroid Build Coastguard Worker this rule. False by default. 98*d5c09012SAndroid Build Coastguard Worker grpc (bool): Enable gRPC specific rules. The gRPC rules are also language-specific, so 99*d5c09012SAndroid Build Coastguard Worker the actual enabled rules will be determined by the other language-specific arguments of 100*d5c09012SAndroid Build Coastguard Worker this rule. False by default. 101*d5c09012SAndroid Build Coastguard Worker java (bool): Enable Java specific rules. False by default. 102*d5c09012SAndroid Build Coastguard Worker go (bool): Enable Go specific rules. False by default. 103*d5c09012SAndroid Build Coastguard Worker cc (bool): Enable C++ specific rules. False by default. Partially implemented (no GAPIC 104*d5c09012SAndroid Build Coastguard Worker support). 105*d5c09012SAndroid Build Coastguard Worker php (bool): Enable PHP specific rules. False by default. 106*d5c09012SAndroid Build Coastguard Worker nodejs (bool): Enable Node.js specific rules. False by default. 107*d5c09012SAndroid Build Coastguard Worker ruby (bool): Enable Ruby specific rules. False by default. 108*d5c09012SAndroid Build Coastguard Worker python (bool): Enable Python-specific rules. False by default. 109*d5c09012SAndroid Build Coastguard Worker csharp (bool): Enable C# specific rules. False by default. 110*d5c09012SAndroid Build Coastguard Worker go_test (bool): A special temporary flag to disable only go_test targets. This is needed to 111*d5c09012SAndroid Build Coastguard Worker support rules_go version 0.24.0+, which made importmap duplicates an error instead of a 112*d5c09012SAndroid Build Coastguard Worker warning. More details: https://github.com/bazelbuild/rules_go/issues/1986. 113*d5c09012SAndroid Build Coastguard Worker rules_override (dict): Custom rule overrides (for advanced usage). 114*d5c09012SAndroid Build Coastguard Worker """ 115*d5c09012SAndroid Build Coastguard Worker 116*d5c09012SAndroid Build Coastguard Worker rules = {} 117*d5c09012SAndroid Build Coastguard Worker 118*d5c09012SAndroid Build Coastguard Worker # 119*d5c09012SAndroid Build Coastguard Worker # Common 120*d5c09012SAndroid Build Coastguard Worker # 121*d5c09012SAndroid Build Coastguard Worker rules["proto_library_with_info"] = _switch( 122*d5c09012SAndroid Build Coastguard Worker gapic, 123*d5c09012SAndroid Build Coastguard Worker "@rules_gapic//:gapic.bzl", 124*d5c09012SAndroid Build Coastguard Worker ) 125*d5c09012SAndroid Build Coastguard Worker rules["moved_proto_library"] = _switch( 126*d5c09012SAndroid Build Coastguard Worker gapic, 127*d5c09012SAndroid Build Coastguard Worker "@rules_gapic//:gapic.bzl", 128*d5c09012SAndroid Build Coastguard Worker ) 129*d5c09012SAndroid Build Coastguard Worker 130*d5c09012SAndroid Build Coastguard Worker # 131*d5c09012SAndroid Build Coastguard Worker # Java 132*d5c09012SAndroid Build Coastguard Worker # 133*d5c09012SAndroid Build Coastguard Worker rules["java_proto_library"] = _switch( 134*d5c09012SAndroid Build Coastguard Worker java, 135*d5c09012SAndroid Build Coastguard Worker "native.java_proto_library", 136*d5c09012SAndroid Build Coastguard Worker ) 137*d5c09012SAndroid Build Coastguard Worker rules["java_grpc_library"] = _switch( 138*d5c09012SAndroid Build Coastguard Worker java and grpc, 139*d5c09012SAndroid Build Coastguard Worker "@io_grpc_grpc_java//:java_grpc_library.bzl", 140*d5c09012SAndroid Build Coastguard Worker ) 141*d5c09012SAndroid Build Coastguard Worker rules["java_gapic_library"] = _switch( 142*d5c09012SAndroid Build Coastguard Worker java and grpc and gapic, 143*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_java//rules_java_gapic:java_gapic.bzl", 144*d5c09012SAndroid Build Coastguard Worker ) 145*d5c09012SAndroid Build Coastguard Worker rules["java_gapic_test"] = _switch( 146*d5c09012SAndroid Build Coastguard Worker java and grpc and gapic, 147*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_java//rules_java_gapic:java_gapic.bzl", 148*d5c09012SAndroid Build Coastguard Worker ) 149*d5c09012SAndroid Build Coastguard Worker rules["java_gapic_assembly_gradle_pkg"] = _switch( 150*d5c09012SAndroid Build Coastguard Worker java and grpc and gapic, 151*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_java//rules_java_gapic:java_gapic_pkg.bzl", 152*d5c09012SAndroid Build Coastguard Worker ) 153*d5c09012SAndroid Build Coastguard Worker 154*d5c09012SAndroid Build Coastguard Worker # 155*d5c09012SAndroid Build Coastguard Worker # Python 156*d5c09012SAndroid Build Coastguard Worker # 157*d5c09012SAndroid Build Coastguard Worker rules["py_proto_library"] = _switch( 158*d5c09012SAndroid Build Coastguard Worker python, 159*d5c09012SAndroid Build Coastguard Worker "@com_github_grpc_grpc//bazel:python_rules.bzl", 160*d5c09012SAndroid Build Coastguard Worker ) 161*d5c09012SAndroid Build Coastguard Worker rules["py_grpc_library"] = _switch( 162*d5c09012SAndroid Build Coastguard Worker python and grpc, 163*d5c09012SAndroid Build Coastguard Worker "@com_github_grpc_grpc//bazel:python_rules.bzl", 164*d5c09012SAndroid Build Coastguard Worker ) 165*d5c09012SAndroid Build Coastguard Worker rules["py_gapic_library"] = _switch( 166*d5c09012SAndroid Build Coastguard Worker python and grpc and gapic, 167*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_python//rules_python_gapic:py_gapic.bzl", 168*d5c09012SAndroid Build Coastguard Worker ) 169*d5c09012SAndroid Build Coastguard Worker rules["py_test"] = _switch( 170*d5c09012SAndroid Build Coastguard Worker python and grpc and gapic, 171*d5c09012SAndroid Build Coastguard Worker "native.py_test", 172*d5c09012SAndroid Build Coastguard Worker ) 173*d5c09012SAndroid Build Coastguard Worker rules["py_gapic_assembly_pkg"] = _switch( 174*d5c09012SAndroid Build Coastguard Worker python and grpc and gapic, 175*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_python//rules_python_gapic:py_gapic_pkg.bzl", 176*d5c09012SAndroid Build Coastguard Worker ) 177*d5c09012SAndroid Build Coastguard Worker rules["py_import"] = _switch( 178*d5c09012SAndroid Build Coastguard Worker python and grpc and gapic, 179*d5c09012SAndroid Build Coastguard Worker "@rules_python//python:defs.bzl", 180*d5c09012SAndroid Build Coastguard Worker ) 181*d5c09012SAndroid Build Coastguard Worker 182*d5c09012SAndroid Build Coastguard Worker # 183*d5c09012SAndroid Build Coastguard Worker # Go 184*d5c09012SAndroid Build Coastguard Worker # 185*d5c09012SAndroid Build Coastguard Worker rules["go_proto_library"] = _switch( 186*d5c09012SAndroid Build Coastguard Worker go, 187*d5c09012SAndroid Build Coastguard Worker "@io_bazel_rules_go//proto:def.bzl", 188*d5c09012SAndroid Build Coastguard Worker ) 189*d5c09012SAndroid Build Coastguard Worker rules["go_grpc_library"] = _switch( 190*d5c09012SAndroid Build Coastguard Worker go, 191*d5c09012SAndroid Build Coastguard Worker "@io_bazel_rules_go//proto:def.bzl", 192*d5c09012SAndroid Build Coastguard Worker ) 193*d5c09012SAndroid Build Coastguard Worker rules["go_library"] = _switch( 194*d5c09012SAndroid Build Coastguard Worker go, 195*d5c09012SAndroid Build Coastguard Worker "@io_bazel_rules_go//go:def.bzl", 196*d5c09012SAndroid Build Coastguard Worker ) 197*d5c09012SAndroid Build Coastguard Worker rules["go_test"] = _switch( 198*d5c09012SAndroid Build Coastguard Worker go and grpc and gapic and go_test, 199*d5c09012SAndroid Build Coastguard Worker "@io_bazel_rules_go//go:def.bzl", 200*d5c09012SAndroid Build Coastguard Worker ) 201*d5c09012SAndroid Build Coastguard Worker rules["go_gapic_library"] = _switch( 202*d5c09012SAndroid Build Coastguard Worker go and grpc and gapic, 203*d5c09012SAndroid Build Coastguard Worker "@com_googleapis_gapic_generator_go//rules_go_gapic:go_gapic.bzl", 204*d5c09012SAndroid Build Coastguard Worker ) 205*d5c09012SAndroid Build Coastguard Worker rules["go_gapic_assembly_pkg"] = _switch( 206*d5c09012SAndroid Build Coastguard Worker go and grpc and gapic, 207*d5c09012SAndroid Build Coastguard Worker "@com_googleapis_gapic_generator_go//rules_go_gapic:go_gapic_pkg.bzl", 208*d5c09012SAndroid Build Coastguard Worker ) 209*d5c09012SAndroid Build Coastguard Worker 210*d5c09012SAndroid Build Coastguard Worker # 211*d5c09012SAndroid Build Coastguard Worker # C++ 212*d5c09012SAndroid Build Coastguard Worker # 213*d5c09012SAndroid Build Coastguard Worker rules["cc_proto_library"] = _switch( 214*d5c09012SAndroid Build Coastguard Worker cc, 215*d5c09012SAndroid Build Coastguard Worker "native.cc_proto_library", 216*d5c09012SAndroid Build Coastguard Worker ) 217*d5c09012SAndroid Build Coastguard Worker rules["cc_grpc_library"] = _switch( 218*d5c09012SAndroid Build Coastguard Worker cc and grpc, 219*d5c09012SAndroid Build Coastguard Worker "@com_github_grpc_grpc//bazel:cc_grpc_library.bzl", 220*d5c09012SAndroid Build Coastguard Worker ) 221*d5c09012SAndroid Build Coastguard Worker rules["cc_gapic_library"] = _switch(False) 222*d5c09012SAndroid Build Coastguard Worker 223*d5c09012SAndroid Build Coastguard Worker # 224*d5c09012SAndroid Build Coastguard Worker # PHP 225*d5c09012SAndroid Build Coastguard Worker # 226*d5c09012SAndroid Build Coastguard Worker rules["php_proto_library"] = _switch( 227*d5c09012SAndroid Build Coastguard Worker php, 228*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_php//rules_php_gapic:php_gapic.bzl", 229*d5c09012SAndroid Build Coastguard Worker "php_proto_library", 230*d5c09012SAndroid Build Coastguard Worker ) 231*d5c09012SAndroid Build Coastguard Worker rules["php_grpc_library"] = _switch( 232*d5c09012SAndroid Build Coastguard Worker php and grpc, 233*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_php//rules_php_gapic:php_gapic.bzl", 234*d5c09012SAndroid Build Coastguard Worker "php_grpc_library", 235*d5c09012SAndroid Build Coastguard Worker ) 236*d5c09012SAndroid Build Coastguard Worker rules["php_gapic_library"] = _switch( 237*d5c09012SAndroid Build Coastguard Worker php and grpc and gapic, 238*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_php//rules_php_gapic:php_gapic.bzl", 239*d5c09012SAndroid Build Coastguard Worker "php_gapic_library", 240*d5c09012SAndroid Build Coastguard Worker ) 241*d5c09012SAndroid Build Coastguard Worker rules["php_gapic_assembly_pkg"] = _switch( 242*d5c09012SAndroid Build Coastguard Worker php and grpc and gapic, 243*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_php//rules_php_gapic:php_gapic_pkg.bzl", 244*d5c09012SAndroid Build Coastguard Worker "php_gapic_assembly_pkg", 245*d5c09012SAndroid Build Coastguard Worker ) 246*d5c09012SAndroid Build Coastguard Worker 247*d5c09012SAndroid Build Coastguard Worker # 248*d5c09012SAndroid Build Coastguard Worker # Node.js 249*d5c09012SAndroid Build Coastguard Worker # 250*d5c09012SAndroid Build Coastguard Worker rules["nodejs_gapic_library"] = _switch( 251*d5c09012SAndroid Build Coastguard Worker nodejs and grpc and gapic, 252*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_typescript//rules_typescript_gapic:typescript_gapic.bzl", 253*d5c09012SAndroid Build Coastguard Worker "typescript_gapic_library", 254*d5c09012SAndroid Build Coastguard Worker ) 255*d5c09012SAndroid Build Coastguard Worker rules["nodejs_gapic_assembly_pkg"] = _switch( 256*d5c09012SAndroid Build Coastguard Worker nodejs and grpc and gapic, 257*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_typescript//rules_typescript_gapic:typescript_gapic_pkg.bzl", 258*d5c09012SAndroid Build Coastguard Worker "typescript_gapic_assembly_pkg", 259*d5c09012SAndroid Build Coastguard Worker ) 260*d5c09012SAndroid Build Coastguard Worker 261*d5c09012SAndroid Build Coastguard Worker # 262*d5c09012SAndroid Build Coastguard Worker # Ruby 263*d5c09012SAndroid Build Coastguard Worker # 264*d5c09012SAndroid Build Coastguard Worker rules["ruby_proto_library"] = _switch( 265*d5c09012SAndroid Build Coastguard Worker ruby, 266*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_ruby//rules_ruby_gapic:ruby_gapic.bzl", 267*d5c09012SAndroid Build Coastguard Worker ) 268*d5c09012SAndroid Build Coastguard Worker rules["ruby_grpc_library"] = _switch( 269*d5c09012SAndroid Build Coastguard Worker ruby and grpc, 270*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_ruby//rules_ruby_gapic:ruby_gapic.bzl", 271*d5c09012SAndroid Build Coastguard Worker ) 272*d5c09012SAndroid Build Coastguard Worker rules["ruby_ads_gapic_library"] = _switch( 273*d5c09012SAndroid Build Coastguard Worker ruby and grpc and gapic, 274*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_ruby//rules_ruby_gapic:ruby_gapic.bzl", 275*d5c09012SAndroid Build Coastguard Worker ) 276*d5c09012SAndroid Build Coastguard Worker rules["ruby_cloud_gapic_library"] = _switch( 277*d5c09012SAndroid Build Coastguard Worker ruby and grpc and gapic, 278*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_ruby//rules_ruby_gapic:ruby_gapic.bzl", 279*d5c09012SAndroid Build Coastguard Worker ) 280*d5c09012SAndroid Build Coastguard Worker rules["ruby_gapic_assembly_pkg"] = _switch( 281*d5c09012SAndroid Build Coastguard Worker ruby and grpc and gapic, 282*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_ruby//rules_ruby_gapic:ruby_gapic_pkg.bzl", 283*d5c09012SAndroid Build Coastguard Worker ) 284*d5c09012SAndroid Build Coastguard Worker 285*d5c09012SAndroid Build Coastguard Worker # 286*d5c09012SAndroid Build Coastguard Worker # C# 287*d5c09012SAndroid Build Coastguard Worker # 288*d5c09012SAndroid Build Coastguard Worker rules["csharp_proto_library"] = _switch( 289*d5c09012SAndroid Build Coastguard Worker csharp, 290*d5c09012SAndroid Build Coastguard Worker "@rules_gapic//csharp:csharp_gapic.bzl", 291*d5c09012SAndroid Build Coastguard Worker ) 292*d5c09012SAndroid Build Coastguard Worker rules["csharp_grpc_library"] = _switch( 293*d5c09012SAndroid Build Coastguard Worker csharp and grpc, 294*d5c09012SAndroid Build Coastguard Worker "@rules_gapic//csharp:csharp_gapic.bzl", 295*d5c09012SAndroid Build Coastguard Worker ) 296*d5c09012SAndroid Build Coastguard Worker rules["csharp_gapic_library"] = _switch( 297*d5c09012SAndroid Build Coastguard Worker csharp and grpc and gapic, 298*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_csharp//rules_csharp_gapic:csharp_gapic.bzl", 299*d5c09012SAndroid Build Coastguard Worker ) 300*d5c09012SAndroid Build Coastguard Worker rules["csharp_gapic_assembly_pkg"] = _switch( 301*d5c09012SAndroid Build Coastguard Worker csharp and grpc and gapic, 302*d5c09012SAndroid Build Coastguard Worker "@gapic_generator_csharp//rules_csharp_gapic:csharp_gapic_pkg.bzl", 303*d5c09012SAndroid Build Coastguard Worker ) 304*d5c09012SAndroid Build Coastguard Worker 305*d5c09012SAndroid Build Coastguard Worker rules.update(rules_override) 306*d5c09012SAndroid Build Coastguard Worker 307*d5c09012SAndroid Build Coastguard Worker switched_rules( 308*d5c09012SAndroid Build Coastguard Worker name = name, 309*d5c09012SAndroid Build Coastguard Worker rules = rules, 310*d5c09012SAndroid Build Coastguard Worker ) 311*d5c09012SAndroid Build Coastguard Worker 312*d5c09012SAndroid Build Coastguard Workerdef _switch(enabled, enabled_value = "", actual_name = ""): 313*d5c09012SAndroid Build Coastguard Worker if enabled: 314*d5c09012SAndroid Build Coastguard Worker return [enabled_value, actual_name] 315*d5c09012SAndroid Build Coastguard Worker else: 316*d5c09012SAndroid Build Coastguard Worker return ["", actual_name] 317