diff options
Diffstat (limited to 'test/rules/android_library_extensibility/custom_android_library.bzl')
-rw-r--r-- | test/rules/android_library_extensibility/custom_android_library.bzl | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/test/rules/android_library_extensibility/custom_android_library.bzl b/test/rules/android_library_extensibility/custom_android_library.bzl new file mode 100644 index 0000000..a58fd1e --- /dev/null +++ b/test/rules/android_library_extensibility/custom_android_library.bzl @@ -0,0 +1,86 @@ +# Copyright 2023 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Custom android_library for use in test.bzl""" + +load( + "//rules:attrs.bzl", + _attrs = "attrs", +) +load( + "//rules:java.bzl", + _java = "java", +) +load( + "//rules:processing_pipeline.bzl", + _ProviderInfo = "ProviderInfo", + _processing_pipeline = "processing_pipeline", +) +load( + "//rules/android_library:attrs.bzl", + _BASE_ATTRS = "ATTRS", +) +load( + "//rules/android_library:impl.bzl", + _BASE_PROCESSORS = "PROCESSORS", + _finalize = "finalize", +) +load( + "//rules/android_library:rule.bzl", + _make_rule = "make_rule", +) + +CustomProviderInfo = provider( + doc = "Custom provider to provide", + fields = dict( + key = "Some key to provide", + ), +) + +def _process_custom_provider(ctx, **_unused_sub_ctxs): + return _ProviderInfo( + name = "custom_provider_ctx", + value = struct( + providers = [ + CustomProviderInfo( + key = ctx.attr.key, + ), + ], + ), + ) + +PROCESSORS = _processing_pipeline.append( + _BASE_PROCESSORS, + CustomProviderInfoProcessor = _process_custom_provider, +) + +_PROCESSING_PIPELINE = _processing_pipeline.make_processing_pipeline( + processors = PROCESSORS, + finalize = _finalize, +) + +def _impl(ctx): + java_package = _java.resolve_package_from_label(ctx.label, ctx.attr.custom_package) + return _processing_pipeline.run(ctx, java_package, _PROCESSING_PIPELINE) + +custom_android_library = _make_rule( + implementation = _impl, + attrs = _attrs.add(_BASE_ATTRS, dict( + # Custom attribute to wrap in a provider + key = attr.string(), + )), + additional_providers = [ + CustomProviderInfo, + ], +) |