intellij/internal/intellij_toolchain/plugins_directory.bzl (37 lines of code) (raw):

load("@bazel_skylib//lib:paths.bzl", "paths") def _plugins_directory_impl(ctx): all_out = [] for archive, name in ctx.attr.plugins.items(): archive_files = archive[DefaultInfo].files.to_list() if len(archive_files) != 1: fail("Should be exactly one plugin zip for: %s" % name) out = ctx.actions.declare_file("%s/%s" % (ctx.attr.name, name)) ctx.actions.run( mnemonic = "UnzipPlugin", executable = ctx.executable._unzipper, outputs = [ out ], inputs = [ archive_files[0] ], arguments = [ archive_files[0].path, paths.dirname(out.path), ], ) all_out.append(out) return DefaultInfo( files = depset(all_out), runfiles = ctx.runfiles(files = all_out), ) plugins_directory = rule( implementation = _plugins_directory_impl, attrs = { "plugins": attr.label_keyed_string_dict( allow_empty = False, mandatory = True, ), "_unzipper": attr.label( default = "@rules_intellij//src/main/java/rules_intellij/unzip_plugin", executable = True, cfg = "exec", ), } )