| """ | 
 | Build rules for plugins. | 
 | """ | 
 |  | 
 | load("//:version.bzl", "GERRIT_VERSION") | 
 | load("@rules_java//java:defs.bzl", "java_binary", "java_library") | 
 | load("//tools/bzl:genrule2.bzl", "genrule2") | 
 |  | 
 | IN_TREE_BUILD_MODE = True | 
 |  | 
 | PLUGIN_DEPS = ["//plugins:plugin-lib"] | 
 |  | 
 | PLUGIN_DEPS_NEVERLINK = ["//plugins:plugin-lib-neverlink"] | 
 |  | 
 | PLUGIN_TEST_DEPS = [ | 
 |     "//java/com/google/gerrit/acceptance:lib", | 
 |     "//lib/bouncycastle:bcpg", | 
 |     "//lib/bouncycastle:bcpkix", | 
 |     "//lib/bouncycastle:bcprov", | 
 | ] | 
 |  | 
 | def gerrit_plugin( | 
 |         name, | 
 |         deps = [], | 
 |         provided_deps = [], | 
 |         srcs = [], | 
 |         resources = [], | 
 |         resource_jars = [], | 
 |         manifest_entries = [], | 
 |         dir_name = None, | 
 |         target_suffix = "", | 
 |         deploy_env = [], | 
 |         **kwargs): | 
 |     java_library( | 
 |         name = name + "__plugin", | 
 |         srcs = srcs, | 
 |         resources = resources, | 
 |         deps = provided_deps + deps + PLUGIN_DEPS_NEVERLINK, | 
 |         visibility = ["//visibility:public"], | 
 |         **kwargs | 
 |     ) | 
 |  | 
 |     if not dir_name: | 
 |         dir_name = name | 
 |  | 
 |     java_binary( | 
 |         name = "%s__non_stamped" % name, | 
 |         deploy_manifest_lines = manifest_entries + [ | 
 |             "Gerrit-ApiType: plugin", | 
 |             "Gerrit-ApiVersion: " + GERRIT_VERSION, | 
 |         ], | 
 |         main_class = "Dummy", | 
 |         runtime_deps = [ | 
 |             ":%s__plugin" % name, | 
 |         ] + resource_jars, | 
 |         deploy_env = deploy_env, | 
 |         visibility = ["//visibility:public"], | 
 |         **kwargs | 
 |     ) | 
 |  | 
 |     # TODO(davido): Remove manual merge of manifest file when this feature | 
 |     # request is implemented: https://github.com/bazelbuild/bazel/issues/2009 | 
 |     # TODO(davido): Remove manual touch command when this issue is resolved: | 
 |     # https://github.com/bazelbuild/bazel/issues/10789 | 
 |     genrule2( | 
 |         name = name + target_suffix, | 
 |         stamp = 1, | 
 |         srcs = ["%s__non_stamped_deploy.jar" % name], | 
 |         cmd = " && ".join([ | 
 |             "TZ=UTC", | 
 |             "export TZ", | 
 |             "GEN_VERSION=$$(cat bazel-out/stable-status.txt | grep -w STABLE_BUILD_%s_LABEL | cut -d ' ' -f 2)" % dir_name.upper(), | 
 |             "cd $$TMP", | 
 |             "unzip -qo $$ROOT/$<", | 
 |             "echo \"Implementation-Version: $$GEN_VERSION\n$$(cat META-INF/MANIFEST.MF)\" > META-INF/MANIFEST.MF", | 
 |             "find . -exec touch '{}' ';'", | 
 |             "zip -Xqr $$ROOT/$@ .", | 
 |         ]), | 
 |         outs = ["%s%s.jar" % (name, target_suffix)], | 
 |         visibility = ["//visibility:public"], | 
 |     ) |