|  | 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", | 
|  | ], | 
|  | ) |