intellij/internal/intellij_plugin/intellij_plugin.bzl (56 lines of code) (raw):

load("@rules_java//java:defs.bzl", "java_binary") load("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library") load("@rules_pkg//:pkg.bzl", "pkg_zip") def _collect_plugin_jars_impl(ctx): java_info = ctx.attr.src[JavaInfo] all_jars = [ x for x in java_info.transitive_runtime_deps.to_list() + java_info.compile_jars.to_list() ] return DefaultInfo( files = depset(all_jars), runfiles = ctx.runfiles(files = all_jars), ) _collect_plugin_jars = rule( implementation = _collect_plugin_jars_impl, attrs = { "src": attr.label( mandatory = True, providers=[ JavaInfo ], ), }, ) def wrap_plugin( name, ide_repo, srcs, deps, resources = [], ide_plugins = [], ): kt_jvm_library( name = "%s_lib" % name, srcs = srcs, deps = deps + [ "@%s//lib:no_link_lib" % ide_repo ] + [ "@%s//plugins:%s" % (ide_repo, x) for x in ide_plugins ], resources = resources, exec_compatible_with = [ "//:constraint_value" ], visibility = ["//visibility:public"], ) java_binary( name = "%s_bin" % name, main_class = "__DUMMY", runtime_deps = [ "%s_lib" % name, ], ) pkg_zip( name = name, srcs = [ "%s_bin_deploy.jar" % name, ], package_dir = "%s/lib" % name, visibility = ["//visibility:public"], ) _collect_plugin_jars( name = "%s_plugin_jars" % name, src = "%s_lib" % name, ) pkg_zip( name = "%s_not_single_jar" % name, srcs = [ "%s_plugin_jars" % name, ], package_dir = "%s/lib" % name, visibility = ["//visibility:public"], )