blob: c4acd92c00ef4473a5066ad7958200dc365cd92a [file] [log] [blame]
load("@rules_java//java:defs.bzl", "java_binary", "java_library")
load("//tools/bzl:genrule2.bzl", "genrule2")
load("//tools/bzl:javadoc.bzl", "java_doc")
load(
"//tools/bzl:plugins.bzl",
"CORE_PLUGINS",
"CUSTOM_PLUGINS",
)
load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_test")
package(default_visibility = ["//visibility:public"])
exports_files([
".eslintrc.js",
".eslintignore",
".prettierrc.js",
"rollup.config.js",
"tsconfig-plugins-base.json",
])
genrule2(
name = "core",
srcs = ["//plugins/%s.jar" % (n if ":" in n else "%s:%s" % (n, n)) for n in CORE_PLUGINS + CUSTOM_PLUGINS],
outs = ["core.zip"],
cmd = "mkdir -p $$TMP/WEB-INF/plugins;" +
"for s in $(SRCS) ; do " +
"ln -s $$ROOT/$$s $$TMP/WEB-INF/plugins;done;" +
"cd $$TMP;" +
"zip -qr $$ROOT/$@ .",
)
PLUGIN_API = [
"//java/com/google/gerrit/server",
"//java/com/google/gerrit/server/ioutil",
"//java/com/google/gerrit/server/restapi",
"//java/com/google/gerrit/pgm/init/api",
"//java/com/google/gerrit/httpd",
"//java/com/google/gerrit/sshd",
]
EXPORTS = [
"//antlr3:query_parser",
"//java/com/google/gerrit/common:annotations",
"//java/com/google/gerrit/common:server",
"//java/com/google/gerrit/exceptions",
"//java/com/google/gerrit/extensions:api",
"//java/com/google/gerrit/git",
"//java/com/google/gerrit/index",
"//java/com/google/gerrit/index/project",
"//java/com/google/gerrit/index:query_exception",
"//java/com/google/gerrit/json",
"//java/com/google/gerrit/lifecycle",
"//java/com/google/gerrit/lucene",
"//java/com/google/gerrit/mail",
"//java/com/google/gerrit/metrics",
"//java/com/google/gerrit/metrics/dropwizard",
"//java/com/google/gerrit/entities",
"//java/com/google/gerrit/server/api",
"//java/com/google/gerrit/server/audit",
"//java/com/google/gerrit/server/cache/mem",
"//java/com/google/gerrit/server/cache/serialize",
"//java/com/google/gerrit/server/data",
"//java/com/google/gerrit/server/git/receive",
"//java/com/google/gerrit/server/logging",
"//java/com/google/gerrit/server/rules/prolog",
"//java/com/google/gerrit/server/schema",
"//java/com/google/gerrit/server/util/time",
"//java/com/google/gerrit/proto",
"//java/com/google/gerrit/util/cli",
"//java/com/google/gerrit/util/http",
"//java/com/google/gerrit/util/logging",
"//lib/antlr:java-runtime",
"//lib/auto:auto-value-annotations",
"//lib/auto:auto-value-gson",
"//lib/commons:compress",
"//lib/commons:dbcp",
"//lib/commons:lang3",
"//lib/dropwizard:dropwizard-core",
"//lib/flogger:api",
"//lib/guice:guice",
"//lib/guice:guice-assistedinject",
"//lib/guice:guice-servlet",
"//lib/guice:javax_inject",
"//lib/httpcomponents:httpclient",
"//lib/httpcomponents:httpcore",
"//lib:jgit-servlet",
"//lib:jgit",
"//lib:jsr305",
"//lib/log:api",
"//lib/log:log4j",
"//lib/mina:sshd",
"//lib/ow2:ow2-asm",
"//lib/ow2:ow2-asm-analysis",
"//lib/ow2:ow2-asm-commons",
"//lib/ow2:ow2-asm-util",
"//lib:args4j",
"//lib:blame-cache",
"//lib:guava",
"//lib:guava-retrying",
"//lib:gson",
"//lib:icu4j",
"//lib:mime-util",
"//lib:protobuf",
"//lib:servlet-api-without-neverlink",
"//lib:soy",
"//prolog:gerrit-prolog-common",
]
java_binary(
name = "bouncycastle-deploy-env",
main_class = "Dummy",
visibility = ["//visibility:private"],
runtime_deps = [
"//lib/bouncycastle:bcpg",
"//lib/bouncycastle:bcpkix",
"//lib/bouncycastle:bcprov",
],
)
java_binary(
name = "plugin-api",
deploy_env = ["bouncycastle-deploy-env"],
main_class = "Dummy",
runtime_deps = [":plugin-lib"],
)
java_library(
name = "plugin-lib",
exports = PLUGIN_API + EXPORTS,
)
java_library(
name = "plugin-lib-neverlink",
neverlink = 1,
exports = PLUGIN_API + EXPORTS,
)
java_binary(
name = "plugin-api-sources",
main_class = "Dummy",
runtime_deps = [
"//antlr3:libquery_parser-src.jar",
"//java/com/google/gerrit/common:libannotations-src.jar",
"//java/com/google/gerrit/common:libserver-src.jar",
"//java/com/google/gerrit/entities:libentities-src.jar",
"//java/com/google/gerrit/extensions:libapi-src.jar",
"//java/com/google/gerrit/httpd:libhttpd-src.jar",
"//java/com/google/gerrit/index:libindex-src.jar",
"//java/com/google/gerrit/index:libquery_exception-src.jar",
"//java/com/google/gerrit/pgm/init/api:libapi-src.jar",
"//java/com/google/gerrit/server:libserver-src.jar",
"//java/com/google/gerrit/server/restapi:librestapi-src.jar",
"//java/com/google/gerrit/sshd:libsshd-src.jar",
"//java/com/google/gerrit/util/http:libhttp-src.jar",
],
)
java_doc(
name = "plugin-api-javadoc",
libs = PLUGIN_API + [
"//antlr3:query_parser",
"//java/com/google/gerrit/index",
"//java/com/google/gerrit/index:query_exception",
"//java/com/google/gerrit/common:annotations",
"//java/com/google/gerrit/common:server",
"//java/com/google/gerrit/extensions:api",
"//java/com/google/gerrit/entities",
"//java/com/google/gerrit/util/http",
],
pkgs = ["com.google.gerrit"],
title = "Gerrit Review Plugin API Documentation",
)
# This is a generic test target for TypeScript plugins.
#
# `nodejs_test` needs to run in the directory where the `package.json` and
# `node_modules` are, so unfortunately we cannot move this target into the
# BUILD files of individual plugins. On the other hand one common target
# for all plugins also has the advantage of being re-usable.
#
# For making this work for a specific plugin you have make the source files
# of the plugin available as a `filegroup` and add it to the `data` attribute.
# And you have to specify the `PLUGIN_DIR` in the `env` attribute.
nodejs_test(
name = "web-test-runner",
size = "large",
chdir = package_name(),
data = [
":package.json",
":web-test-runner.config.mjs",
# This is an example of how you could reference your plugin sources:
# "//plugins/codemirror-editor/web:codemirror-test-sources",
"@plugins_npm//:node_modules",
],
entry_point = "@plugins_npm//:node_modules/@web/test-runner/dist/bin.js",
env = {"PLUGIN_DIR": "codemirror-editor"},
tags = [
"local",
"manual",
],
)