1# Copyright 2022 Google LLC. 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 15"""Utilities related to java_plugin and JavaPluginInfo. 16 17kt_codegen_plugin is using this visitor to extract java_plugin information. 18Due to cross plugin type processing, the plugin info search processor differs 19from the way that java targets handles plugins. 20""" 21 22load("//:visibility.bzl", "RULES_KOTLIN") 23 24visibility(RULES_KOTLIN) 25 26def _get_java_plugins(_target, ctx_rule): 27 return [ 28 t[JavaPluginInfo].plugins 29 for t in getattr(ctx_rule.attr, "exported_plugins", []) 30 if JavaPluginInfo in t 31 ] 32 33java_plugin_visitor = struct( 34 name = "java_plugins", 35 visit_target = _get_java_plugins, 36 filter_edge = None, 37 finish_expansion = None, 38 process_unvisited_target = None, 39) 40