xref: /aosp_15_r20/external/bazelbuild-rules_android/mobile_install/adapters/proto_library.bzl (revision 9e965d6fece27a77de5377433c2f7e6999b8cc0b)
1# Copyright 2018 The Bazel Authors. All rights reserved.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#    http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14"""Rule adapter for proto_library."""
15
16load(":adapters/base.bzl", "make_adapter")
17load(":providers.bzl", "MIAndroidDexInfo", "providers")
18load(":transform.bzl", "dex")
19
20def _aspect_attrs():
21    """Attrs of the rule requiring traversal by the aspect."""
22    return ["deps"]
23
24def _adapt(target, ctx):
25    """Adapts the rule and target data.
26
27    Args:
28      target: The target.
29      ctx: The context.
30
31    Returns:
32      A list of providers.
33    """
34    if not JavaInfo in target:
35        return []
36    return [
37        providers.make_mi_android_dex_info(
38            dex_shards = dex(
39                ctx,
40                [j.class_jar for j in target[JavaInfo].outputs.jars],
41                target[JavaInfo].transitive_compile_time_jars,
42            ),
43            deps = providers.collect(MIAndroidDexInfo, ctx.rule.attr.deps),
44        ),
45    ]
46
47proto_library = make_adapter(_aspect_attrs, _adapt)
48