Adapt to Gerrit's use of bazel modules
Turn off strict_visibility in the rules_jvm_external maven_install used
for @external_plugin_deps.
With strict_visibility enabled, transitively resolved Maven artifacts
are generated with //visibility:private and cannot be referenced
directly from plugin BUILD targets. This conflicts with Bazel strict-
deps, which requires direct dependencies to be listed when their types
are used at compile time.
For example, scribejava-apis depends transitively on scribejava-core,
but plugin sources extending DefaultApi20 must add
@external_plugin_deps//:com_github_scribejava_scribejava_core as a
direct dependency to satisfy strict-deps. With strict_visibility enabled
this fails due to visibility restrictions.
Disabling strict_visibility allows depending on such transitively
resolved artifacts directly, while still keeping strict-deps enabled to
enforce explicit compile-time dependencies.
To support both standalone and in-tree build modes, split the Maven
repositories into:
* a shared "external_plugin_deps" repository that contains only
Gerrit-provided APIs (gerrit-plugin-api and acceptance framework)
and does not define a lock file
* a plugin-specific repository ("oauth_plugin_deps") that contains
the plugin's bundled runtime dependencies and owns its lock file
This allows:
- bazlets to continue referencing @external_plugin_deps for
Gerrit API dependencies in standalone mode without bundling
them into the plugin
- plugin runtime dependencies to remain reproducible via
lock files
- multiple plugins to coexist in an in-tree build without
contributing conflicting lock files for the same repository
Provide a MODULE.bazel fragment that can be linked into Gerrit's
`plugins/external_plugin_deps.MODULE.bazel` when the plugin is built
inside the Gerrit source tree.
This allows the plugin to be built in-tree without modifying Gerrit's
main module configuration beyond including this fragment.
Update the build documentation to describe how to link the fragment
and run plugin tests in this configuration.
Change-Id: Ib3e8ee4012c8180131b26622dfacc29e31834646
diff --git a/.bazelrc b/.bazelrc
index d96881e..b799288 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -1,6 +1,9 @@
-# TODO(davido): Migrate all dependencies from WORKSPACE to MODULE.bazel
-# https://issues.gerritcodereview.com/issues/303819949
-common --noenable_bzlmod
+common --enable_bzlmod --lockfile_mode=error
build --workspace_status_command="python3 ./tools/workspace_status.py"
test --build_tests_only
+
+build --java_language_version=21
+build --java_runtime_version=remotejdk_21
+build --tool_java_language_version=21
+build --tool_java_runtime_version=remotejdk_21
diff --git a/.bazelversion b/.bazelversion
index 9c695d3..e8be684 100644
--- a/.bazelversion
+++ b/.bazelversion
@@ -1 +1 @@
-7.2.0rc3
+7.6.1
diff --git a/BUILD b/BUILD
index 424d36c..d0b4c45 100644
--- a/BUILD
+++ b/BUILD
@@ -1,10 +1,7 @@
-load("@rules_java//java:defs.bzl", "java_library")
-load("//tools/bzl:junit.bzl", "junit_tests")
load(
- "//tools/bzl:plugin.bzl",
- "PLUGIN_DEPS",
- "PLUGIN_TEST_DEPS",
+ "@com_googlesource_gerrit_bazlets//:gerrit_plugin.bzl",
"gerrit_plugin",
+ "gerrit_plugin_tests",
)
gerrit_plugin(
@@ -20,34 +17,23 @@
],
resources = glob(["src/main/resources/**/*"]),
deps = [
- "@jackson-core//jar",
- "@jackson-databind//jar",
- "@json//jar",
- "@sap-env//jar",
- "@sap-java-api//jar",
- "@sap-java-security//jar",
- "@sap-xsuaa-token-client//jar",
- "@scribejava-apis//jar",
- "@scribejava-core//jar",
+ "@oauth_plugin_deps//:com_fasterxml_jackson_core_jackson_databind",
+ "@oauth_plugin_deps//:com_github_scribejava_scribejava_apis",
+ "@oauth_plugin_deps//:com_github_scribejava_scribejava_core",
+ "@oauth_plugin_deps//:com_sap_cloud_security_env",
+ "@oauth_plugin_deps//:com_sap_cloud_security_java_api",
+ "@oauth_plugin_deps//:com_sap_cloud_security_java_security",
+ "@oauth_plugin_deps//:com_sap_cloud_security_xsuaa_token_client",
],
)
-junit_tests(
+gerrit_plugin_tests(
name = "oauth_tests",
srcs = glob(["src/test/java/**/*.java"]),
tags = ["oauth"],
deps = [
- ":oauth__plugin_test_deps",
- "@scribejava-apis//jar",
- "@scribejava-core//jar",
- ],
-)
-
-java_library(
- name = "oauth__plugin_test_deps",
- testonly = 1,
- visibility = ["//visibility:public"],
- exports = PLUGIN_DEPS + PLUGIN_TEST_DEPS + [
":oauth__plugin",
+ "@oauth_plugin_deps//:com_github_scribejava_scribejava_apis",
+ "@oauth_plugin_deps//:com_github_scribejava_scribejava_core",
],
)
diff --git a/MODULE.bazel b/MODULE.bazel
index 0b932b8..80acb9a 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -1,2 +1,77 @@
-# TODO(davido): Migrate all dependencies from WORKSPACE to MODULE.bazel
-# https://issues.gerritcodereview.com/issues/303819949
+module(name = "gerrit-oauth-provider")
+
+bazel_dep(name = "rules_jvm_external", version = "6.10")
+bazel_dep(name = "com_googlesource_gerrit_bazlets")
+git_override(
+ module_name = "com_googlesource_gerrit_bazlets",
+ commit = "6166cef56705308547a67ab28f61ee1c090915cc",
+ remote = "https://gerrit.googlesource.com/bazlets",
+)
+
+GERRIT_API_VERS = "3.11.0"
+
+gerrit_api_version = use_repo_rule("@com_googlesource_gerrit_bazlets//:gerrit_api_version.bzl", "gerrit_api_version")
+
+gerrit_api_version(
+ name = "gerrit_api_version",
+ version = GERRIT_API_VERS,
+ visibility = ["//visibility:public"],
+)
+
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+maven.install(
+ name = "external_plugin_deps",
+ artifacts = [
+ "com.google.gerrit:gerrit-plugin-api:" + GERRIT_API_VERS,
+ "com.google.gerrit:gerrit-acceptance-framework:" + GERRIT_API_VERS,
+ ],
+ # IMPORTANT:
+ # Do NOT set lock_file here.
+ #
+ # This repository is intentionally shared across plugins and contains
+ # only Gerrit-provided APIs (gerrit-plugin-api and acceptance framework)
+ # that are provided by Gerrit at runtime and must not be bundled into
+ # the plugin JAR.
+ #
+ # When built in-tree, rules_jvm_external merges maven.install() tags
+ # with the same name across all modules. Defining a lock_file for this
+ # shared repository in more than one plugin causes multiple lock files
+ # to be contributed for the same repository name, which is rejected by
+ # rules_jvm_external during module extension evaluation.
+ #
+ # Plugin runtime dependencies must instead be declared in a
+ # plugin-specific repository (e.g. oauth_plugin_deps) that owns
+ # its own lock file.
+)
+use_repo(maven, "external_plugin_deps")
+
+maven.install(
+ name = "oauth_plugin_deps",
+ artifacts = [
+ "com.fasterxml.jackson.core:jackson-databind:2.10.2",
+ "com.github.scribejava:scribejava-apis:6.9.0",
+ "com.sap.cloud.security:java-security:3.6.0",
+ ],
+ duplicate_version_warning = "error",
+ excluded_artifacts = [
+ # com_sap_cloud_security:java_security depends on commons-io.
+ # Gerrit core already provides commons-io, so exclude it here to
+ # avoid bundling it into the plugin and prevent duplicate classes
+ # or version skew at runtime in Gerrit's plugin classloader.
+ "commons-io:commons-io",
+ # com.sap.cloud.security.xsuaa:token-client depends on caffeine cache.
+ # Gerrit core already provides caffeine cache, so exclude it here to
+ # avoid bundling it into the plugin and prevent duplicate classes
+ # or version skew at runtime in Gerrit's plugin classloader.
+ "com.github.ben-manes.caffeine:caffeine",
+ ],
+ fail_if_repin_required = True,
+ fail_on_missing_checksum = True,
+ fetch_sources = True,
+ lock_file = "//:oauth_plugin_deps.lock.json",
+ repositories = [
+ "https://repo1.maven.org/maven2",
+ ],
+ version_conflict_policy = "pinned",
+)
+use_repo(maven, "oauth_plugin_deps")
diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock
new file mode 100644
index 0000000..0bf40d5
--- /dev/null
+++ b/MODULE.bazel.lock
@@ -0,0 +1,645 @@
+{
+ "lockFileVersion": 13,
+ "registryFileHashes": {
+ "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497",
+ "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2",
+ "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589",
+ "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0",
+ "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb",
+ "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16",
+ "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915",
+ "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed",
+ "https://bcr.bazel.build/modules/abseil-cpp/20240116.2/MODULE.bazel": "73939767a4686cd9a520d16af5ab440071ed75cec1a876bf2fcfaf1f71987a16",
+ "https://bcr.bazel.build/modules/abseil-cpp/20250127.0/MODULE.bazel": "d1086e248cda6576862b4b3fe9ad76a214e08c189af5b42557a6e1888812c5d5",
+ "https://bcr.bazel.build/modules/abseil-cpp/20250127.0/source.json": "1b996859f840d8efc7c720efc61dcf2a84b1261cb3974cbbe9b6666ebf567775",
+ "https://bcr.bazel.build/modules/abseil-py/2.1.0/MODULE.bazel": "5ebe5bf853769c65707e5c28f216798f7a4b1042015e6a36e6d03094d94bec8a",
+ "https://bcr.bazel.build/modules/abseil-py/2.1.0/source.json": "0e8fc4f088ce07099c1cd6594c20c7ddbb48b4b3c0849b7d94ba94be88ff042b",
+ "https://bcr.bazel.build/modules/apple_support/1.11.1/MODULE.bazel": "1843d7cd8a58369a444fc6000e7304425fba600ff641592161d9f15b179fb896",
+ "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85",
+ "https://bcr.bazel.build/modules/apple_support/1.15.1/source.json": "517f2b77430084c541bc9be2db63fdcbb7102938c5f64c17ee60ffda2e5cf07b",
+ "https://bcr.bazel.build/modules/apple_support/1.5.0/MODULE.bazel": "50341a62efbc483e8a2a6aec30994a58749bd7b885e18dd96aa8c33031e558ef",
+ "https://bcr.bazel.build/modules/bazel_features/1.1.0/MODULE.bazel": "cfd42ff3b815a5f39554d97182657f8c4b9719568eb7fded2b9135f084bf760b",
+ "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd",
+ "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8",
+ "https://bcr.bazel.build/modules/bazel_features/1.13.0/MODULE.bazel": "c14c33c7c3c730612bdbe14ebbb5e61936b6f11322ea95a6e91cd1ba962f94df",
+ "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d",
+ "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d",
+ "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a",
+ "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58",
+ "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b",
+ "https://bcr.bazel.build/modules/bazel_features/1.23.0/MODULE.bazel": "fd1ac84bc4e97a5a0816b7fd7d4d4f6d837b0047cf4cbd81652d616af3a6591a",
+ "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d",
+ "https://bcr.bazel.build/modules/bazel_features/1.3.0/MODULE.bazel": "cdcafe83ec318cda34e02948e81d790aab8df7a929cec6f6969f13a489ccecd9",
+ "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87",
+ "https://bcr.bazel.build/modules/bazel_features/1.30.0/source.json": "b07e17f067fe4f69f90b03b36ef1e08fe0d1f3cac254c1241a1818773e3423bc",
+ "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7",
+ "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a",
+ "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8",
+ "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e",
+ "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686",
+ "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a",
+ "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5",
+ "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d",
+ "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651",
+ "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138",
+ "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917",
+ "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d",
+ "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b",
+ "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/MODULE.bazel": "69ad6927098316848b34a9142bcc975e018ba27f08c4ff403f50c1b6e646ca67",
+ "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/source.json": "34a3c8bcf233b835eb74be9d628899bb32999d3e0eadef1947a0a562a2b16ffb",
+ "https://bcr.bazel.build/modules/bazel_worker_api/0.0.1/MODULE.bazel": "02a13b77321773b2042e70ee5e4c5e099c8ddee4cf2da9cd420442c36938d4bd",
+ "https://bcr.bazel.build/modules/bazel_worker_api/0.0.4/MODULE.bazel": "460aa12d01231a80cce03c548287b433b321d205b0028ae596728c35e5ee442e",
+ "https://bcr.bazel.build/modules/bazel_worker_api/0.0.4/source.json": "d353c410d47a8b65d09fa98e83d57ebec257a2c2b9c6e42d6fda1cb25e5464a5",
+ "https://bcr.bazel.build/modules/bazel_worker_java/0.0.4/MODULE.bazel": "82494a01018bb7ef06d4a17ec4cd7a758721f10eb8b6c820a818e70d669500db",
+ "https://bcr.bazel.build/modules/bazel_worker_java/0.0.4/source.json": "a2d30458fd86cf022c2b6331e652526fa08e17573b2f5034a9dbcacdf9c2583c",
+ "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84",
+ "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8",
+ "https://bcr.bazel.build/modules/gazelle/0.32.0/MODULE.bazel": "b499f58a5d0d3537f3cf5b76d8ada18242f64ec474d8391247438bf04f58c7b8",
+ "https://bcr.bazel.build/modules/gazelle/0.33.0/MODULE.bazel": "a13a0f279b462b784fb8dd52a4074526c4a2afe70e114c7d09066097a46b3350",
+ "https://bcr.bazel.build/modules/gazelle/0.34.0/MODULE.bazel": "abdd8ce4d70978933209db92e436deb3a8b737859e9354fb5fd11fb5c2004c8a",
+ "https://bcr.bazel.build/modules/gazelle/0.36.0/MODULE.bazel": "e375d5d6e9a6ca59b0cb38b0540bc9a05b6aa926d322f2de268ad267a2ee74c0",
+ "https://bcr.bazel.build/modules/gazelle/0.40.0/MODULE.bazel": "42ba5378ebe845fca43989a53186ab436d956db498acde790685fe0e8f9c6146",
+ "https://bcr.bazel.build/modules/gazelle/0.40.0/source.json": "1e5ef6e4d8b9b6836d93273c781e78ff829ea2e077afef7a57298040fa4f010a",
+ "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb",
+ "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4",
+ "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6",
+ "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f",
+ "https://bcr.bazel.build/modules/googletest/1.15.2/MODULE.bazel": "6de1edc1d26cafb0ea1a6ab3f4d4192d91a312fd2d360b63adaa213cd00b2108",
+ "https://bcr.bazel.build/modules/googletest/1.15.2/source.json": "dbdda654dcb3a0d7a8bc5d0ac5fc7e150b58c2a986025ae5bc634bb2cb61f470",
+ "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075",
+ "https://bcr.bazel.build/modules/jsoncpp/1.9.6/MODULE.bazel": "2f8d20d3b7d54143213c4dfc3d98225c42de7d666011528dc8fe91591e2e17b0",
+ "https://bcr.bazel.build/modules/jsoncpp/1.9.6/source.json": "a04756d367a2126c3541682864ecec52f92cdee80a35735a3cb249ce015ca000",
+ "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902",
+ "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/MODULE.bazel": "6f7b417dcc794d9add9e556673ad25cb3ba835224290f4f848f8e2db1e1fca74",
+ "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/source.json": "f448c6e8963fdfa7eb831457df83ad63d3d6355018f6574fb017e8169deb43a9",
+ "https://bcr.bazel.build/modules/package_metadata/0.0.7/MODULE.bazel": "7adb03933fc8401f495800cf4eafcff0edc6da0ff55c7db223ef69d19f689486",
+ "https://bcr.bazel.build/modules/package_metadata/0.0.7/source.json": "50639625e937b56115012674c797cca7a05a96b4878c87d803c13dc2b31de8a0",
+ "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5",
+ "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f",
+ "https://bcr.bazel.build/modules/platforms/0.0.11/source.json": "f7e188b79ebedebfe75e9e1d098b8845226c7992b307e28e1496f23112e8fc29",
+ "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee",
+ "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37",
+ "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615",
+ "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814",
+ "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d",
+ "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc",
+ "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7",
+ "https://bcr.bazel.build/modules/protobuf/23.1/MODULE.bazel": "88b393b3eb4101d18129e5db51847cd40a5517a53e81216144a8c32dfeeca52a",
+ "https://bcr.bazel.build/modules/protobuf/24.4/MODULE.bazel": "7bc7ce5f2abf36b3b7b7c8218d3acdebb9426aeb35c2257c96445756f970eb12",
+ "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c",
+ "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d",
+ "https://bcr.bazel.build/modules/protobuf/27.2/MODULE.bazel": "32450b50673882e4c8c3d10a83f3bc82161b213ed2f80d17e38bece8f165c295",
+ "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df",
+ "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92",
+ "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0",
+ "https://bcr.bazel.build/modules/protobuf/3.19.2/MODULE.bazel": "532ffe5f2186b69fdde039efe6df13ba726ff338c6bc82275ad433013fa10573",
+ "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858",
+ "https://bcr.bazel.build/modules/protobuf/31.1/MODULE.bazel": "379a389bb330b7b8c1cdf331cc90bf3e13de5614799b3b52cdb7c6f389f6b38e",
+ "https://bcr.bazel.build/modules/protobuf/31.1/source.json": "25af5d0219da0c0fc4d1191a24ce438e6ca7f49d2e1a94f354efeba6ef10426f",
+ "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e",
+ "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34",
+ "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/source.json": "6900fdc8a9e95866b8c0d4ad4aba4d4236317b5c1cd04c502df3f0d33afed680",
+ "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206",
+ "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/MODULE.bazel": "b4963dda9b31080be1905ef085ecd7dd6cd47c05c79b9cdf83ade83ab2ab271a",
+ "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/source.json": "2ff292be6ef3340325ce8a045ecc326e92cbfab47c7cbab4bd85d28971b97ac4",
+ "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa",
+ "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8",
+ "https://bcr.bazel.build/modules/rules_android/0.6.6/MODULE.bazel": "b0fb569752aab65ab1a9db0a8f6cfaf5aa1754965e17e95dcf0e4d88e192a68d",
+ "https://bcr.bazel.build/modules/rules_android/0.6.6/source.json": "a9d8dc2d5a102dc03269a94acc886a4cab82cdcb9ccbc77b0f665d6d17a6ae09",
+ "https://bcr.bazel.build/modules/rules_apple/3.16.0/MODULE.bazel": "0d1caf0b8375942ce98ea944be754a18874041e4e0459401d925577624d3a54a",
+ "https://bcr.bazel.build/modules/rules_apple/3.16.0/source.json": "d8b5fe461272018cc07cfafce11fe369c7525330804c37eec5a82f84cd475366",
+ "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647",
+ "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002",
+ "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191",
+ "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc",
+ "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87",
+ "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a",
+ "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c",
+ "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f",
+ "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e",
+ "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5",
+ "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513",
+ "https://bcr.bazel.build/modules/rules_cc/0.1.5/MODULE.bazel": "88dfc9361e8b5ae1008ac38f7cdfd45ad738e4fa676a3ad67d19204f045a1fd8",
+ "https://bcr.bazel.build/modules/rules_cc/0.1.5/source.json": "4bb4fed7f5499775d495739f785a5494a1f854645fa1bac5de131264f5acdf01",
+ "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6",
+ "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8",
+ "https://bcr.bazel.build/modules/rules_go/0.41.0/MODULE.bazel": "55861d8e8bb0e62cbd2896f60ff303f62ffcb0eddb74ecb0e5c0cbe36fc292c8",
+ "https://bcr.bazel.build/modules/rules_go/0.42.0/MODULE.bazel": "8cfa875b9aa8c6fce2b2e5925e73c1388173ea3c32a0db4d2b4804b453c14270",
+ "https://bcr.bazel.build/modules/rules_go/0.46.0/MODULE.bazel": "3477df8bdcc49e698b9d25f734c4f3a9f5931ff34ee48a2c662be168f5f2d3fd",
+ "https://bcr.bazel.build/modules/rules_go/0.50.1/MODULE.bazel": "b91a308dc5782bb0a8021ad4330c81fea5bda77f96b9e4c117b9b9c8f6665ee0",
+ "https://bcr.bazel.build/modules/rules_go/0.51.0-rc2/MODULE.bazel": "edfc3a9cea7bedb0eaaff37b0d7817c1a4bf72b3c615580b0ffcee6c52690fd4",
+ "https://bcr.bazel.build/modules/rules_go/0.51.0-rc2/source.json": "6b5cd0b3da2bd0e6949580851db990a04af0a285f072b9a0f059424457cd8cc9",
+ "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74",
+ "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86",
+ "https://bcr.bazel.build/modules/rules_java/6.3.0/MODULE.bazel": "a97c7678c19f236a956ad260d59c86e10a463badb7eb2eda787490f4c969b963",
+ "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31",
+ "https://bcr.bazel.build/modules/rules_java/7.1.0/MODULE.bazel": "30d9135a2b6561c761bd67bd4990da591e6bdc128790ce3e7afd6a3558b2fb64",
+ "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a",
+ "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6",
+ "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab",
+ "https://bcr.bazel.build/modules/rules_java/7.4.0/MODULE.bazel": "a592852f8a3dd539e82ee6542013bf2cadfc4c6946be8941e189d224500a8934",
+ "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe",
+ "https://bcr.bazel.build/modules/rules_java/7.6.5/MODULE.bazel": "481164be5e02e4cab6e77a36927683263be56b7e36fef918b458d7a8a1ebadb1",
+ "https://bcr.bazel.build/modules/rules_java/8.13.0/MODULE.bazel": "0444ebf737d144cf2bb2ccb368e7f1cce735264285f2a3711785827c1686625e",
+ "https://bcr.bazel.build/modules/rules_java/8.13.0/source.json": "4605c0f676b87dd9d1fabd4d743b71f04d97503bd1a79aad53f87399fb5396de",
+ "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017",
+ "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939",
+ "https://bcr.bazel.build/modules/rules_java/8.6.0/MODULE.bazel": "9c064c434606d75a086f15ade5edb514308cccd1544c2b2a89bbac4310e41c71",
+ "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2",
+ "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7",
+ "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909",
+ "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036",
+ "https://bcr.bazel.build/modules/rules_jvm_external/6.10/MODULE.bazel": "33e636ca6bc9ee0fa090a38aa33c631ded2d8cf6fead4124181d1b35dc474f7c",
+ "https://bcr.bazel.build/modules/rules_jvm_external/6.10/source.json": "c191249787625db72616a3fb3cc2786ab57355a2e3b615402b8b3b66b0f995b7",
+ "https://bcr.bazel.build/modules/rules_jvm_external/6.2/MODULE.bazel": "36a6e52487a855f33cb960724eb56547fa87e2c98a0474c3acad94339d7f8e99",
+ "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0",
+ "https://bcr.bazel.build/modules/rules_jvm_external/6.6/MODULE.bazel": "153042249c7060536dc95b6bb9f9bb8063b8a0b0cb7acdb381bddbc2374aed55",
+ "https://bcr.bazel.build/modules/rules_jvm_external/6.7/MODULE.bazel": "e717beabc4d091ecb2c803c2d341b88590e9116b8bf7947915eeb33aab4f96dd",
+ "https://bcr.bazel.build/modules/rules_kotlin/1.9.5/MODULE.bazel": "043a16a572f610558ec2030db3ff0c9938574e7dd9f58bded1bb07c0192ef025",
+ "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3",
+ "https://bcr.bazel.build/modules/rules_kotlin/2.1.3/MODULE.bazel": "ce7def6d576aa8d3a9c6d10e13b4d157296229674371f67dbf788dae0afae3d5",
+ "https://bcr.bazel.build/modules/rules_kotlin/2.1.3/source.json": "0b0dc9400f14b5fbb13d278ad3bf0413cdbaf0da0db337e055b855e35b878a3b",
+ "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0",
+ "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d",
+ "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c",
+ "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb",
+ "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc",
+ "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff",
+ "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a",
+ "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06",
+ "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7",
+ "https://bcr.bazel.build/modules/rules_proto/6.0.0-rc1/MODULE.bazel": "1e5b502e2e1a9e825eef74476a5a1ee524a92297085015a052510b09a1a09483",
+ "https://bcr.bazel.build/modules/rules_proto/6.0.0/MODULE.bazel": "b531d7f09f58dce456cd61b4579ce8c86b38544da75184eadaf0a7cb7966453f",
+ "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73",
+ "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2",
+ "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1",
+ "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f",
+ "https://bcr.bazel.build/modules/rules_python/0.22.1/MODULE.bazel": "26114f0c0b5e93018c0c066d6673f1a2c3737c7e90af95eff30cfee38d0bbac7",
+ "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300",
+ "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382",
+ "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed",
+ "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58",
+ "https://bcr.bazel.build/modules/rules_python/0.33.2/MODULE.bazel": "3e036c4ad8d804a4dad897d333d8dce200d943df4827cb849840055be8d2e937",
+ "https://bcr.bazel.build/modules/rules_python/0.37.1/MODULE.bazel": "3faeb2d9fa0a81f8980643ee33f212308f4d93eea4b9ce6f36d0b742e71e9500",
+ "https://bcr.bazel.build/modules/rules_python/0.37.2/MODULE.bazel": "b5ffde91410745750b6c13be1c5dc4555ef5bc50562af4a89fd77807fdde626a",
+ "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c",
+ "https://bcr.bazel.build/modules/rules_python/1.0.0/MODULE.bazel": "898a3d999c22caa585eb062b600f88654bf92efb204fa346fb55f6f8edffca43",
+ "https://bcr.bazel.build/modules/rules_python/1.7.0/MODULE.bazel": "d01f995ecd137abf30238ad9ce97f8fc3ac57289c8b24bd0bf53324d937a14f8",
+ "https://bcr.bazel.build/modules/rules_python/1.7.0/source.json": "028a084b65dcf8f4dc4f82f8778dbe65df133f234b316828a82e060d81bdce32",
+ "https://bcr.bazel.build/modules/rules_robolectric/4.14.1.2/MODULE.bazel": "d44fec647d0aeb67b9f3b980cf68ba634976f3ae7ccd6c07d790b59b87a4f251",
+ "https://bcr.bazel.build/modules/rules_robolectric/4.14.1.2/source.json": "37c10335f2361c337c5c1f34ed36d2da70534c23088062b33a8bdaab68aa9dea",
+ "https://bcr.bazel.build/modules/rules_shell/0.1.2/MODULE.bazel": "66e4ca3ce084b04af0b9ff05ff14cab4e5df7503973818bb91cbc6cda08d32fc",
+ "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c",
+ "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b",
+ "https://bcr.bazel.build/modules/rules_shell/0.4.1/MODULE.bazel": "00e501db01bbf4e3e1dd1595959092c2fadf2087b2852d3f553b5370f5633592",
+ "https://bcr.bazel.build/modules/rules_shell/0.4.1/source.json": "4757bd277fe1567763991c4425b483477bb82e35e777a56fd846eb5cceda324a",
+ "https://bcr.bazel.build/modules/rules_swift/1.16.0/MODULE.bazel": "4a09f199545a60d09895e8281362b1ff3bb08bbde69c6fc87aff5b92fcc916ca",
+ "https://bcr.bazel.build/modules/rules_swift/2.1.1/MODULE.bazel": "494900a80f944fc7aa61500c2073d9729dff0b764f0e89b824eb746959bc1046",
+ "https://bcr.bazel.build/modules/rules_swift/2.1.1/source.json": "40fc69dfaac64deddbb75bd99cdac55f4427d9ca0afbe408576a65428427a186",
+ "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8",
+ "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c",
+ "https://bcr.bazel.build/modules/stardoc/0.6.2/MODULE.bazel": "7060193196395f5dd668eda046ccbeacebfd98efc77fed418dbe2b82ffaa39fd",
+ "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c",
+ "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5",
+ "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216",
+ "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/MODULE.bazel": "5e463fbfba7b1701d957555ed45097d7f984211330106ccd1352c6e0af0dcf91",
+ "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/source.json": "32bd87e5f4d7acc57c5b2ff7c325ae3061d5e242c0c4c214ae87e0f1c13e54cb",
+ "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43",
+ "https://bcr.bazel.build/modules/upb/0.0.0-20230516-61a97ef/MODULE.bazel": "c0df5e35ad55e264160417fd0875932ee3c9dda63d9fccace35ac62f45e1b6f9",
+ "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0",
+ "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27",
+ "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79",
+ "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "eec517b5bbe5492629466e11dae908d043364302283de25581e3eb944326c4ca",
+ "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/source.json": "22bc55c47af97246cfc093d0acf683a7869377de362b5d1c552c2c2e16b7a806",
+ "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198"
+ },
+ "selectedYankedVersions": {},
+ "moduleExtensions": {
+ "@@apple_support~//crosstool:setup.bzl%apple_cc_configure_extension": {
+ "general": {
+ "bzlTransitiveDigest": "ltCGFbl/LQQZXn/LEMXfKX7pGwyqNiOCHcmiQW0tmjM=",
+ "usagesDigest": "eXsWd8YDJDt7+F94YtjKuTAIRMWBi9JLS8hUiqynRIY=",
+ "recordedFileInputs": {},
+ "recordedDirentsInputs": {},
+ "envVariables": {},
+ "generatedRepoSpecs": {
+ "local_config_apple_cc_toolchains": {
+ "bzlFile": "@@apple_support~//crosstool:setup.bzl",
+ "ruleClassName": "_apple_cc_autoconf_toolchains",
+ "attributes": {}
+ },
+ "local_config_apple_cc": {
+ "bzlFile": "@@apple_support~//crosstool:setup.bzl",
+ "ruleClassName": "_apple_cc_autoconf",
+ "attributes": {}
+ }
+ },
+ "recordedRepoMappingEntries": [
+ [
+ "apple_support~",
+ "bazel_tools",
+ "bazel_tools"
+ ]
+ ]
+ }
+ },
+ "@@rules_android~//rules/android_sdk_repository:rule.bzl%android_sdk_repository_extension": {
+ "general": {
+ "bzlTransitiveDigest": "NAy+0M15JNVEBb8Tny6t7j3lKqTnsAMjoBB6LJ+C370=",
+ "usagesDigest": "weZLGEpNa+fTJZ9CEljWxpN3/kuPzj/ULgebzOt2h4g=",
+ "recordedFileInputs": {},
+ "recordedDirentsInputs": {},
+ "envVariables": {},
+ "generatedRepoSpecs": {
+ "androidsdk": {
+ "bzlFile": "@@rules_android~//rules/android_sdk_repository:rule.bzl",
+ "ruleClassName": "_android_sdk_repository",
+ "attributes": {}
+ }
+ },
+ "recordedRepoMappingEntries": []
+ }
+ },
+ "@@rules_kotlin~//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": {
+ "general": {
+ "bzlTransitiveDigest": "BSndOxBXlbe5qZf1NRxf828dpEK6tM429pCnaFoUFYs=",
+ "usagesDigest": "Dg5Nih77FaLAipQB7wgwsAy553a3po0eNGQVTZKgCM8=",
+ "recordedFileInputs": {},
+ "recordedDirentsInputs": {},
+ "envVariables": {},
+ "generatedRepoSpecs": {
+ "com_github_jetbrains_kotlin_git": {
+ "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:compiler.bzl",
+ "ruleClassName": "kotlin_compiler_git_repository",
+ "attributes": {
+ "urls": [
+ "https://github.com/JetBrains/kotlin/releases/download/v2.1.0/kotlin-compiler-2.1.0.zip"
+ ],
+ "sha256": "b6698d5728ad8f9edcdd01617d638073191d8a03139cc538a391b4e3759ad297"
+ }
+ },
+ "com_github_jetbrains_kotlin": {
+ "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:compiler.bzl",
+ "ruleClassName": "kotlin_capabilities_repository",
+ "attributes": {
+ "git_repository_name": "com_github_jetbrains_kotlin_git",
+ "compiler_version": "2.1.0"
+ }
+ },
+ "com_github_google_ksp": {
+ "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:ksp.bzl",
+ "ruleClassName": "ksp_compiler_plugin_repository",
+ "attributes": {
+ "urls": [
+ "https://github.com/google/ksp/releases/download/2.1.0-1.0.28/artifacts.zip"
+ ],
+ "sha256": "fc27b08cadc061a4a989af01cbeccb613feef1995f4aad68f2be0f886a3ee251",
+ "strip_version": "2.1.0-1.0.28"
+ }
+ },
+ "com_github_pinterest_ktlint": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_file",
+ "attributes": {
+ "sha256": "a9f923be58fbd32670a17f0b729b1df804af882fa57402165741cb26e5440ca1",
+ "urls": [
+ "https://github.com/pinterest/ktlint/releases/download/1.3.1/ktlint"
+ ],
+ "executable": true
+ }
+ },
+ "kotlinx_serialization_core_jvm": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_jar",
+ "attributes": {
+ "sha256": "29c821a8d4e25cbfe4f2ce96cdd4526f61f8f4e69a135f9612a34a81d93b65f1",
+ "urls": [
+ "https://repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.jar"
+ ]
+ }
+ },
+ "kotlinx_serialization_json": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_jar",
+ "attributes": {
+ "sha256": "8c0016890a79ab5980dd520a5ab1a6738023c29aa3b6437c482e0e5fdc06dab1",
+ "urls": [
+ "https://repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.jar"
+ ]
+ }
+ },
+ "kotlinx_serialization_json_jvm": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_jar",
+ "attributes": {
+ "sha256": "d3234179bcff1886d53d67c11eca47f7f3cf7b63c349d16965f6db51b7f3dd9a",
+ "urls": [
+ "https://repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.jar"
+ ]
+ }
+ }
+ },
+ "recordedRepoMappingEntries": [
+ [
+ "rules_kotlin~",
+ "bazel_tools",
+ "bazel_tools"
+ ]
+ ]
+ }
+ },
+ "@@rules_python~//python/extensions:config.bzl%config": {
+ "general": {
+ "bzlTransitiveDigest": "JEJFuaDD7VQV641t2xy3kzc2EBtIxzHUAHwUerkS5RM=",
+ "usagesDigest": "n1K7/nlkMpUURDkWJsNS8Nr0tmxSDkFevx8GXKG82eA=",
+ "recordedFileInputs": {},
+ "recordedDirentsInputs": {},
+ "envVariables": {},
+ "generatedRepoSpecs": {
+ "rules_python_internal": {
+ "bzlFile": "@@rules_python~//python/private:internal_config_repo.bzl",
+ "ruleClassName": "internal_config_repo",
+ "attributes": {
+ "transition_setting_generators": {},
+ "transition_settings": []
+ }
+ },
+ "pypi__build": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_archive",
+ "attributes": {
+ "url": "https://files.pythonhosted.org/packages/e2/03/f3c8ba0a6b6e30d7d18c40faab90807c9bb5e9a1e3b2fe2008af624a9c97/build-1.2.1-py3-none-any.whl",
+ "sha256": "75e10f767a433d9a86e50d83f418e83efc18ede923ee5ff7df93b6cb0306c5d4",
+ "type": "zip",
+ "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"
+ }
+ },
+ "pypi__click": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_archive",
+ "attributes": {
+ "url": "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl",
+ "sha256": "ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28",
+ "type": "zip",
+ "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"
+ }
+ },
+ "pypi__colorama": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_archive",
+ "attributes": {
+ "url": "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl",
+ "sha256": "4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6",
+ "type": "zip",
+ "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"
+ }
+ },
+ "pypi__importlib_metadata": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_archive",
+ "attributes": {
+ "url": "https://files.pythonhosted.org/packages/2d/0a/679461c511447ffaf176567d5c496d1de27cbe34a87df6677d7171b2fbd4/importlib_metadata-7.1.0-py3-none-any.whl",
+ "sha256": "30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570",
+ "type": "zip",
+ "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"
+ }
+ },
+ "pypi__installer": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_archive",
+ "attributes": {
+ "url": "https://files.pythonhosted.org/packages/e5/ca/1172b6638d52f2d6caa2dd262ec4c811ba59eee96d54a7701930726bce18/installer-0.7.0-py3-none-any.whl",
+ "sha256": "05d1933f0a5ba7d8d6296bb6d5018e7c94fa473ceb10cf198a92ccea19c27b53",
+ "type": "zip",
+ "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"
+ }
+ },
+ "pypi__more_itertools": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_archive",
+ "attributes": {
+ "url": "https://files.pythonhosted.org/packages/50/e2/8e10e465ee3987bb7c9ab69efb91d867d93959095f4807db102d07995d94/more_itertools-10.2.0-py3-none-any.whl",
+ "sha256": "686b06abe565edfab151cb8fd385a05651e1fdf8f0a14191e4439283421f8684",
+ "type": "zip",
+ "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"
+ }
+ },
+ "pypi__packaging": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_archive",
+ "attributes": {
+ "url": "https://files.pythonhosted.org/packages/49/df/1fceb2f8900f8639e278b056416d49134fb8d84c5942ffaa01ad34782422/packaging-24.0-py3-none-any.whl",
+ "sha256": "2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5",
+ "type": "zip",
+ "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"
+ }
+ },
+ "pypi__pep517": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_archive",
+ "attributes": {
+ "url": "https://files.pythonhosted.org/packages/25/6e/ca4a5434eb0e502210f591b97537d322546e4833dcb4d470a48c375c5540/pep517-0.13.1-py3-none-any.whl",
+ "sha256": "31b206f67165b3536dd577c5c3f1518e8fbaf38cbc57efff8369a392feff1721",
+ "type": "zip",
+ "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"
+ }
+ },
+ "pypi__pip": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_archive",
+ "attributes": {
+ "url": "https://files.pythonhosted.org/packages/8a/6a/19e9fe04fca059ccf770861c7d5721ab4c2aebc539889e97c7977528a53b/pip-24.0-py3-none-any.whl",
+ "sha256": "ba0d021a166865d2265246961bec0152ff124de910c5cc39f1156ce3fa7c69dc",
+ "type": "zip",
+ "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"
+ }
+ },
+ "pypi__pip_tools": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_archive",
+ "attributes": {
+ "url": "https://files.pythonhosted.org/packages/0d/dc/38f4ce065e92c66f058ea7a368a9c5de4e702272b479c0992059f7693941/pip_tools-7.4.1-py3-none-any.whl",
+ "sha256": "4c690e5fbae2f21e87843e89c26191f0d9454f362d8acdbd695716493ec8b3a9",
+ "type": "zip",
+ "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"
+ }
+ },
+ "pypi__pyproject_hooks": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_archive",
+ "attributes": {
+ "url": "https://files.pythonhosted.org/packages/ae/f3/431b9d5fe7d14af7a32340792ef43b8a714e7726f1d7b69cc4e8e7a3f1d7/pyproject_hooks-1.1.0-py3-none-any.whl",
+ "sha256": "7ceeefe9aec63a1064c18d939bdc3adf2d8aa1988a510afec15151578b232aa2",
+ "type": "zip",
+ "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"
+ }
+ },
+ "pypi__setuptools": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_archive",
+ "attributes": {
+ "url": "https://files.pythonhosted.org/packages/90/99/158ad0609729111163fc1f674a5a42f2605371a4cf036d0441070e2f7455/setuptools-78.1.1-py3-none-any.whl",
+ "sha256": "c3a9c4211ff4c309edb8b8c4f1cbfa7ae324c4ba9f91ff254e3d305b9fd54561",
+ "type": "zip",
+ "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"
+ }
+ },
+ "pypi__tomli": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_archive",
+ "attributes": {
+ "url": "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl",
+ "sha256": "939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
+ "type": "zip",
+ "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"
+ }
+ },
+ "pypi__wheel": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_archive",
+ "attributes": {
+ "url": "https://files.pythonhosted.org/packages/7d/cd/d7460c9a869b16c3dd4e1e403cce337df165368c71d6af229a74699622ce/wheel-0.43.0-py3-none-any.whl",
+ "sha256": "55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81",
+ "type": "zip",
+ "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"
+ }
+ },
+ "pypi__zipp": {
+ "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+ "ruleClassName": "http_archive",
+ "attributes": {
+ "url": "https://files.pythonhosted.org/packages/da/55/a03fd7240714916507e1fcf7ae355bd9d9ed2e6db492595f1a67f61681be/zipp-3.18.2-py3-none-any.whl",
+ "sha256": "dce197b859eb796242b0622af1b8beb0a722d52aa2f57133ead08edd5bf5374e",
+ "type": "zip",
+ "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n"
+ }
+ }
+ },
+ "recordedRepoMappingEntries": [
+ [
+ "rules_python~",
+ "bazel_tools",
+ "bazel_tools"
+ ],
+ [
+ "rules_python~",
+ "pypi__build",
+ "rules_python~~config~pypi__build"
+ ],
+ [
+ "rules_python~",
+ "pypi__click",
+ "rules_python~~config~pypi__click"
+ ],
+ [
+ "rules_python~",
+ "pypi__colorama",
+ "rules_python~~config~pypi__colorama"
+ ],
+ [
+ "rules_python~",
+ "pypi__importlib_metadata",
+ "rules_python~~config~pypi__importlib_metadata"
+ ],
+ [
+ "rules_python~",
+ "pypi__installer",
+ "rules_python~~config~pypi__installer"
+ ],
+ [
+ "rules_python~",
+ "pypi__more_itertools",
+ "rules_python~~config~pypi__more_itertools"
+ ],
+ [
+ "rules_python~",
+ "pypi__packaging",
+ "rules_python~~config~pypi__packaging"
+ ],
+ [
+ "rules_python~",
+ "pypi__pep517",
+ "rules_python~~config~pypi__pep517"
+ ],
+ [
+ "rules_python~",
+ "pypi__pip",
+ "rules_python~~config~pypi__pip"
+ ],
+ [
+ "rules_python~",
+ "pypi__pip_tools",
+ "rules_python~~config~pypi__pip_tools"
+ ],
+ [
+ "rules_python~",
+ "pypi__pyproject_hooks",
+ "rules_python~~config~pypi__pyproject_hooks"
+ ],
+ [
+ "rules_python~",
+ "pypi__setuptools",
+ "rules_python~~config~pypi__setuptools"
+ ],
+ [
+ "rules_python~",
+ "pypi__tomli",
+ "rules_python~~config~pypi__tomli"
+ ],
+ [
+ "rules_python~",
+ "pypi__wheel",
+ "rules_python~~config~pypi__wheel"
+ ],
+ [
+ "rules_python~",
+ "pypi__zipp",
+ "rules_python~~config~pypi__zipp"
+ ]
+ ]
+ }
+ },
+ "@@rules_python~//python/uv:uv.bzl%uv": {
+ "general": {
+ "bzlTransitiveDigest": "K6zoA/u57+d21o50BApale3BrKDIB1vWM6q455k772s=",
+ "usagesDigest": "PAumpjVacknBm1rrOwOjhYqel5KPCDgZNHNmdVc9/WY=",
+ "recordedFileInputs": {},
+ "recordedDirentsInputs": {},
+ "envVariables": {},
+ "generatedRepoSpecs": {
+ "uv": {
+ "bzlFile": "@@rules_python~//python/uv/private:uv_toolchains_repo.bzl",
+ "ruleClassName": "uv_toolchains_repo",
+ "attributes": {
+ "toolchain_type": "'@@rules_python~//python/uv:uv_toolchain_type'",
+ "toolchain_names": [
+ "none"
+ ],
+ "toolchain_implementations": {
+ "none": "'@@rules_python~//python:none'"
+ },
+ "toolchain_compatible_with": {
+ "none": [
+ "@platforms//:incompatible"
+ ]
+ },
+ "toolchain_target_settings": {}
+ }
+ }
+ },
+ "recordedRepoMappingEntries": [
+ [
+ "rules_python~",
+ "bazel_tools",
+ "bazel_tools"
+ ],
+ [
+ "rules_python~",
+ "platforms",
+ "platforms"
+ ]
+ ]
+ }
+ }
+ }
+}
diff --git a/WORKSPACE b/WORKSPACE
deleted file mode 100644
index a5c7e06..0000000
--- a/WORKSPACE
+++ /dev/null
@@ -1,19 +0,0 @@
-workspace(name = "com_github_davido_gerrit_oauth_provider")
-
-load("//:bazlets.bzl", "load_bazlets")
-
-load_bazlets(
- commit = "40fe63dc04b90d4a60b931b41da0abda321e73c7",
- #local_path = "/home/<user>/projects/bazlets",
-)
-
-load(
- "@com_googlesource_gerrit_bazlets//:gerrit_api.bzl",
- "gerrit_api",
-)
-
-gerrit_api()
-
-load(":external_plugin_deps.bzl", "external_plugin_deps")
-
-external_plugin_deps()
diff --git a/bazlets.bzl b/bazlets.bzl
deleted file mode 100644
index f089af4..0000000
--- a/bazlets.bzl
+++ /dev/null
@@ -1,18 +0,0 @@
-load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
-
-NAME = "com_googlesource_gerrit_bazlets"
-
-def load_bazlets(
- commit,
- local_path = None):
- if not local_path:
- git_repository(
- name = NAME,
- remote = "https://gerrit.googlesource.com/bazlets",
- commit = commit,
- )
- else:
- native.local_repository(
- name = NAME,
- path = local_path,
- )
diff --git a/external_plugin_deps.MODULE.bazel b/external_plugin_deps.MODULE.bazel
new file mode 100644
index 0000000..eb0623a
--- /dev/null
+++ b/external_plugin_deps.MODULE.bazel
@@ -0,0 +1,19 @@
+# Module fragment for wiring this plugin's Bazel module into the
+# Gerrit in-tree build when using Bzlmod.
+#
+# This file is included from Gerrit's plugins/external_plugin_deps.MODULE.bazel.
+# It wires the plugin module into the root dependency graph and exposes
+# any repositories it creates (for example via rules_jvm_external).
+#
+# NOTE: This file must be self-contained: bindings do not cross include()
+# boundaries, so it re-declares the rules_jvm_external extension handle.
+
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+
+bazel_dep(name = "gerrit-oauth-provider")
+local_path_override(
+ module_name = "gerrit-oauth-provider",
+ path = "plugins/oauth",
+)
+
+use_repo(maven, "oauth_plugin_deps")
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl
deleted file mode 100644
index 76d6c7f..0000000
--- a/external_plugin_deps.bzl
+++ /dev/null
@@ -1,59 +0,0 @@
-load("//tools/bzl:maven_jar.bzl", "maven_jar")
-
-def external_plugin_deps():
- JACKSON_VERS = "2.10.2"
- SCRIBEJAVA_VERS = "6.9.0"
- SAP_SECURITY_VERS = "3.6.0"
- maven_jar(
- name = "scribejava-core",
- artifact = "com.github.scribejava:scribejava-core:" + SCRIBEJAVA_VERS,
- sha1 = "ed761f450d8382f75787e8fee9ae52e7ec768747",
- )
- maven_jar(
- name = "scribejava-apis",
- artifact = "com.github.scribejava:scribejava-apis:" + SCRIBEJAVA_VERS,
- sha1 = "a374c7a36533e58e53b42b584a8b3751ab1e13c4",
- )
- maven_jar(
- name = "jackson-annotations",
- artifact = "com.fasterxml.jackson.core:jackson-annotations:" + JACKSON_VERS,
- sha1 = "3a13b6105946541b8d4181a0506355b5fae63260",
- )
- maven_jar(
- name = "jackson-databind",
- artifact = "com.fasterxml.jackson.core:jackson-databind:" + JACKSON_VERS,
- sha1 = "0528de95f198afafbcfb0c09d2e43b6e0ea663ec",
- deps = [
- "@jackson-annotations//jar",
- ],
- )
- maven_jar(
- name = "jackson-core",
- artifact = "com.fasterxml.jackson.core:jackson-core:" + JACKSON_VERS,
- sha1 = "73d4322a6bda684f676a2b5fe918361c4e5c7cca",
- )
- maven_jar(
- name = "sap-java-security",
- artifact = "com.sap.cloud.security:java-security:" + SAP_SECURITY_VERS,
- sha1 = "6e6bef72b84110538b1d72d93c6e4b94988e7113",
- )
- maven_jar(
- name = "sap-java-api",
- artifact = "com.sap.cloud.security:java-api:" + SAP_SECURITY_VERS,
- sha1 = "a954bcf647f3e8ed7fb980bc55f08788f9b984e9",
- )
- maven_jar(
- name = "sap-env",
- artifact = "com.sap.cloud.security:env:" + SAP_SECURITY_VERS,
- sha1 = "b0d84d8a7d0a73fef9329941226e725d0de00322",
- )
- maven_jar(
- name = "sap-xsuaa-token-client",
- artifact = "com.sap.cloud.security.xsuaa:token-client:" + SAP_SECURITY_VERS,
- sha1 = "dea8c6f5cb7d02c014dd19006a249df376bcbf38",
- )
- maven_jar(
- name = "json",
- artifact = "org.json:json:20250517",
- sha1 = "d67181bbd819ccceb929b580a4e2fcb0c8b17cd8",
- )
diff --git a/oauth_plugin_deps.lock.json b/oauth_plugin_deps.lock.json
new file mode 100644
index 0000000..034495f
--- /dev/null
+++ b/oauth_plugin_deps.lock.json
@@ -0,0 +1,433 @@
+{
+ "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
+ "__INPUT_ARTIFACTS_HASH": {
+ "com.fasterxml.jackson.core:jackson-databind": 1009785917,
+ "com.github.ben-manes.caffeine:caffeine": -1640976164,
+ "com.github.scribejava:scribejava-apis": 1477368439,
+ "com.sap.cloud.security:java-security": 794433498,
+ "commons-io:commons-io": 150368282,
+ "org.slf4j:slf4j-api": 2145585153,
+ "repositories": -1949687017
+ },
+ "__RESOLVED_ARTIFACTS_HASH": {
+ "com.fasterxml.jackson.core:jackson-annotations": 1228906799,
+ "com.fasterxml.jackson.core:jackson-annotations:jar:sources": -277300575,
+ "com.fasterxml.jackson.core:jackson-core": 1550936961,
+ "com.fasterxml.jackson.core:jackson-core:jar:sources": -1497775698,
+ "com.fasterxml.jackson.core:jackson-databind": 580126352,
+ "com.fasterxml.jackson.core:jackson-databind:jar:sources": -645758670,
+ "com.github.scribejava:scribejava-apis": -653050744,
+ "com.github.scribejava:scribejava-apis:jar:sources": -1859576969,
+ "com.github.scribejava:scribejava-core": 1406089847,
+ "com.github.scribejava:scribejava-core:jar:sources": -14907717,
+ "com.sap.cloud.environment.servicebinding.api:java-access-api": 2007607395,
+ "com.sap.cloud.environment.servicebinding.api:java-access-api:jar:sources": -1233227292,
+ "com.sap.cloud.environment.servicebinding.api:java-consumption-api": -1817974863,
+ "com.sap.cloud.environment.servicebinding.api:java-consumption-api:jar:sources": -8704683,
+ "com.sap.cloud.environment.servicebinding.api:java-core-api": -1735796780,
+ "com.sap.cloud.environment.servicebinding.api:java-core-api:jar:sources": 1999829921,
+ "com.sap.cloud.environment.servicebinding:java-sap-service-operator": 1745329749,
+ "com.sap.cloud.environment.servicebinding:java-sap-service-operator:jar:sources": -901997661,
+ "com.sap.cloud.environment.servicebinding:java-sap-vcap-services": -1609318615,
+ "com.sap.cloud.environment.servicebinding:java-sap-vcap-services:jar:sources": -842693877,
+ "com.sap.cloud.security.xsuaa:token-client": 1681468439,
+ "com.sap.cloud.security.xsuaa:token-client:jar:sources": -965374528,
+ "com.sap.cloud.security:env": 817074038,
+ "com.sap.cloud.security:env:jar:sources": 1509344659,
+ "com.sap.cloud.security:java-api": 288475059,
+ "com.sap.cloud.security:java-api:jar:sources": 882005002,
+ "com.sap.cloud.security:java-security": -1254124896,
+ "com.sap.cloud.security:java-security:jar:sources": 469003515,
+ "org.json:json": -1501897552,
+ "org.json:json:jar:sources": -642026621
+ },
+ "artifacts": {
+ "com.fasterxml.jackson.core:jackson-annotations": {
+ "shasums": {
+ "jar": "8c3cba89bf3e03b35a0e6f892c2eb17ed8fdde2e214c3a4c18703d63796bae46",
+ "sources": "9ab9d0a64a8d911bc2dd4edcbf76dcf43af0d9c1835f30a3117f972de55bbe90"
+ },
+ "version": "2.10.2"
+ },
+ "com.fasterxml.jackson.core:jackson-core": {
+ "shasums": {
+ "jar": "4c41f22a48f6ebb28752baeb6d25bf09ba4ff0ad8bfb82650dde448928b9da4f",
+ "sources": "3f356724ca7a5ba77a18e5448e31d544a4e04b9beca585f680fed81ff80767fb"
+ },
+ "version": "2.10.2"
+ },
+ "com.fasterxml.jackson.core:jackson-databind": {
+ "shasums": {
+ "jar": "42c25644e35fadfbded1b7f35a8d1e70a86737f190e43aa2c56cea4b96cbda88",
+ "sources": "6436b499a6d31caf37b2a03af3d1729c9d53b9971fbf40b9239da8551b3e8db6"
+ },
+ "version": "2.10.2"
+ },
+ "com.github.scribejava:scribejava-apis": {
+ "shasums": {
+ "jar": "c563bcd2bae1f3e671d034ebb18006ddb214174fc0ec8a68ac9fa4cc3fc81000",
+ "sources": "31939f8da8bec28fea7c82dcba56ea565a8bfb9b92bd351eccf10e6c79e8911b"
+ },
+ "version": "6.9.0"
+ },
+ "com.github.scribejava:scribejava-core": {
+ "shasums": {
+ "jar": "7901774ed1b3d1634a2e50320a0687d499389a6fecf83f788f5297900f6338c0",
+ "sources": "798206cbb8457fa55c2a15a82a39277fafbc54f6ca1a65ce709214c5262eaf64"
+ },
+ "version": "6.9.0"
+ },
+ "com.sap.cloud.environment.servicebinding.api:java-access-api": {
+ "shasums": {
+ "jar": "f944652b83ba17ea2dea2e3ad4a03d048a87c3b2fb4f254eb3db3536e1557f90",
+ "sources": "c3a61682502f560497e045495c410b375e171d81e7c3301bf2691d82aa3b8378"
+ },
+ "version": "0.20.0"
+ },
+ "com.sap.cloud.environment.servicebinding.api:java-consumption-api": {
+ "shasums": {
+ "jar": "f2d04a3f0409872e907f2c3a5ac147b2e09db5a2961a90017652d2a24b8501a5",
+ "sources": "806428b92136c46d475e2b525980c9006f1b118737816965e87ef9623262b2b4"
+ },
+ "version": "0.20.0"
+ },
+ "com.sap.cloud.environment.servicebinding.api:java-core-api": {
+ "shasums": {
+ "jar": "f7e4108d2e4fd2d9205272a3e89f72c4b033e975fe901ec33e0cd0b7cf57938c",
+ "sources": "73cd882dff66a9ce444257aabe37022326f1c13ef1508ee4c83fa78f077f5ad0"
+ },
+ "version": "0.20.0"
+ },
+ "com.sap.cloud.environment.servicebinding:java-sap-service-operator": {
+ "shasums": {
+ "jar": "5b8e9669ed5db82e5c3970c8656c60fac515afb621c4048c1afd0ee77b5779d2",
+ "sources": "328ba45c23c9fbc83e3f2b92ecb3dafd14bef50448d75f59e0161849bdd7d0e9"
+ },
+ "version": "0.20.0"
+ },
+ "com.sap.cloud.environment.servicebinding:java-sap-vcap-services": {
+ "shasums": {
+ "jar": "325e70849fb1168717dd86215fa1727780cd034f06d78ae0ad06d4ac129d01ce",
+ "sources": "f1961561ef4b496051068acd9cfdecd2286e6b8dd45a8c51c016a59caad16617"
+ },
+ "version": "0.20.0"
+ },
+ "com.sap.cloud.security.xsuaa:token-client": {
+ "shasums": {
+ "jar": "729a8ac9436cb7a0ecf1573b6ede62c30deada13c3a09c4952beb81f18307e91",
+ "sources": "a520eb746a1a77adcd8736f34937e151e23b72d17c10c15dacdaf520d6dfbce9"
+ },
+ "version": "3.6.0"
+ },
+ "com.sap.cloud.security:env": {
+ "shasums": {
+ "jar": "7bec022537ebc755fc49782b4c88a157e544baa10c14284c2e9b33a8c89f3877",
+ "sources": "32983b3384c1b923d1b1f0606845b7b82c04efd765f147d616a786dbf8e0b9f5"
+ },
+ "version": "3.6.0"
+ },
+ "com.sap.cloud.security:java-api": {
+ "shasums": {
+ "jar": "a7cfcc872aadf1bc93a3d25ab282dfb782e7bd4d106a80f45cfa5555702aaaad",
+ "sources": "fee5a4a541c5fd8daf995c0a2db571e1586c6297cf5907a01dfc92816dc307f0"
+ },
+ "version": "3.6.0"
+ },
+ "com.sap.cloud.security:java-security": {
+ "shasums": {
+ "jar": "167ff27a3ab757b94dc2b3fc73bda43df3c4eafb56aba3d09eedf363fbb05176",
+ "sources": "c5e6c52decef5b086d2504b0123cb74fecdd916a616a25cc9ee2be6853edd055"
+ },
+ "version": "3.6.0"
+ },
+ "org.json:json": {
+ "shasums": {
+ "jar": "85d4c1ab192d3117fd02c7fff1ec0fe63ade45cf56def7fe950ef060cf06e99f",
+ "sources": "851c5efe8d4e8cc231d05c6172f4400bc2e078708945b0ad4dafc8f428af956f"
+ },
+ "version": "20250107"
+ }
+ },
+ "dependencies": {
+ "com.fasterxml.jackson.core:jackson-databind": [
+ "com.fasterxml.jackson.core:jackson-annotations",
+ "com.fasterxml.jackson.core:jackson-core"
+ ],
+ "com.github.scribejava:scribejava-apis": [
+ "com.fasterxml.jackson.core:jackson-databind",
+ "com.github.scribejava:scribejava-core"
+ ],
+ "com.github.scribejava:scribejava-core": [
+ "com.fasterxml.jackson.core:jackson-databind"
+ ],
+ "com.sap.cloud.environment.servicebinding.api:java-access-api": [
+ "com.sap.cloud.environment.servicebinding.api:java-core-api"
+ ],
+ "com.sap.cloud.environment.servicebinding.api:java-consumption-api": [
+ "com.sap.cloud.environment.servicebinding.api:java-core-api"
+ ],
+ "com.sap.cloud.environment.servicebinding:java-sap-service-operator": [
+ "com.sap.cloud.environment.servicebinding.api:java-access-api",
+ "com.sap.cloud.environment.servicebinding.api:java-core-api",
+ "org.json:json"
+ ],
+ "com.sap.cloud.environment.servicebinding:java-sap-vcap-services": [
+ "com.sap.cloud.environment.servicebinding.api:java-access-api",
+ "com.sap.cloud.environment.servicebinding.api:java-core-api",
+ "org.json:json"
+ ],
+ "com.sap.cloud.security.xsuaa:token-client": [
+ "com.sap.cloud.security:java-api",
+ "org.json:json"
+ ],
+ "com.sap.cloud.security:env": [
+ "com.sap.cloud.environment.servicebinding.api:java-access-api",
+ "com.sap.cloud.environment.servicebinding.api:java-consumption-api",
+ "com.sap.cloud.environment.servicebinding:java-sap-service-operator",
+ "com.sap.cloud.environment.servicebinding:java-sap-vcap-services",
+ "com.sap.cloud.security:java-api",
+ "org.json:json"
+ ],
+ "com.sap.cloud.security:java-security": [
+ "com.sap.cloud.security.xsuaa:token-client",
+ "com.sap.cloud.security:env",
+ "com.sap.cloud.security:java-api"
+ ]
+ },
+ "packages": {
+ "com.fasterxml.jackson.core:jackson-annotations": [
+ "com.fasterxml.jackson.annotation"
+ ],
+ "com.fasterxml.jackson.core:jackson-core": [
+ "com.fasterxml.jackson.core",
+ "com.fasterxml.jackson.core.async",
+ "com.fasterxml.jackson.core.base",
+ "com.fasterxml.jackson.core.exc",
+ "com.fasterxml.jackson.core.filter",
+ "com.fasterxml.jackson.core.format",
+ "com.fasterxml.jackson.core.io",
+ "com.fasterxml.jackson.core.json",
+ "com.fasterxml.jackson.core.json.async",
+ "com.fasterxml.jackson.core.sym",
+ "com.fasterxml.jackson.core.type",
+ "com.fasterxml.jackson.core.util"
+ ],
+ "com.fasterxml.jackson.core:jackson-databind": [
+ "com.fasterxml.jackson.databind",
+ "com.fasterxml.jackson.databind.annotation",
+ "com.fasterxml.jackson.databind.cfg",
+ "com.fasterxml.jackson.databind.deser",
+ "com.fasterxml.jackson.databind.deser.impl",
+ "com.fasterxml.jackson.databind.deser.std",
+ "com.fasterxml.jackson.databind.exc",
+ "com.fasterxml.jackson.databind.ext",
+ "com.fasterxml.jackson.databind.introspect",
+ "com.fasterxml.jackson.databind.json",
+ "com.fasterxml.jackson.databind.jsonFormatVisitors",
+ "com.fasterxml.jackson.databind.jsonschema",
+ "com.fasterxml.jackson.databind.jsontype",
+ "com.fasterxml.jackson.databind.jsontype.impl",
+ "com.fasterxml.jackson.databind.module",
+ "com.fasterxml.jackson.databind.node",
+ "com.fasterxml.jackson.databind.ser",
+ "com.fasterxml.jackson.databind.ser.impl",
+ "com.fasterxml.jackson.databind.ser.std",
+ "com.fasterxml.jackson.databind.type",
+ "com.fasterxml.jackson.databind.util"
+ ],
+ "com.github.scribejava:scribejava-apis": [
+ "com.github.scribejava.apis",
+ "com.github.scribejava.apis.facebook",
+ "com.github.scribejava.apis.fitbit",
+ "com.github.scribejava.apis.imgur",
+ "com.github.scribejava.apis.mailru",
+ "com.github.scribejava.apis.microsoftazureactivedirectory",
+ "com.github.scribejava.apis.odnoklassniki",
+ "com.github.scribejava.apis.openid",
+ "com.github.scribejava.apis.salesforce",
+ "com.github.scribejava.apis.tutby",
+ "com.github.scribejava.apis.vk",
+ "com.github.scribejava.apis.wunderlist"
+ ],
+ "com.github.scribejava:scribejava-core": [
+ "com.github.scribejava.core.builder",
+ "com.github.scribejava.core.builder.api",
+ "com.github.scribejava.core.exceptions",
+ "com.github.scribejava.core.extractors",
+ "com.github.scribejava.core.httpclient",
+ "com.github.scribejava.core.httpclient.jdk",
+ "com.github.scribejava.core.httpclient.multipart",
+ "com.github.scribejava.core.java8",
+ "com.github.scribejava.core.model",
+ "com.github.scribejava.core.oauth",
+ "com.github.scribejava.core.oauth2",
+ "com.github.scribejava.core.oauth2.bearersignature",
+ "com.github.scribejava.core.oauth2.clientauthentication",
+ "com.github.scribejava.core.pkce",
+ "com.github.scribejava.core.revoke",
+ "com.github.scribejava.core.services",
+ "com.github.scribejava.core.utils"
+ ],
+ "com.sap.cloud.environment.servicebinding.api:java-access-api": [
+ "com.sap.cloud.environment.servicebinding.api",
+ "com.sap.cloud.environment.servicebinding.api.exception"
+ ],
+ "com.sap.cloud.environment.servicebinding.api:java-consumption-api": [
+ "com.sap.cloud.environment.servicebinding.api",
+ "com.sap.cloud.environment.servicebinding.api.exception"
+ ],
+ "com.sap.cloud.environment.servicebinding.api:java-core-api": [
+ "com.sap.cloud.environment.servicebinding.api",
+ "com.sap.cloud.environment.servicebinding.api.exception"
+ ],
+ "com.sap.cloud.environment.servicebinding:java-sap-service-operator": [
+ "com.sap.cloud.environment.servicebinding"
+ ],
+ "com.sap.cloud.environment.servicebinding:java-sap-vcap-services": [
+ "com.sap.cloud.environment.servicebinding"
+ ],
+ "com.sap.cloud.security.xsuaa:token-client": [
+ "com.sap.cloud.security.client",
+ "com.sap.cloud.security.mtls",
+ "com.sap.cloud.security.xsuaa",
+ "com.sap.cloud.security.xsuaa.client",
+ "com.sap.cloud.security.xsuaa.http",
+ "com.sap.cloud.security.xsuaa.jwt",
+ "com.sap.cloud.security.xsuaa.tokenflows",
+ "com.sap.cloud.security.xsuaa.util"
+ ],
+ "com.sap.cloud.security:env": [
+ "com.sap.cloud.security.config",
+ "com.sap.cloud.security.json"
+ ],
+ "com.sap.cloud.security:java-api": [
+ "com.sap.cloud.security.annotation",
+ "com.sap.cloud.security.config",
+ "com.sap.cloud.security.json",
+ "com.sap.cloud.security.servlet",
+ "com.sap.cloud.security.token",
+ "com.sap.cloud.security.token.validation",
+ "com.sap.cloud.security.x509"
+ ],
+ "com.sap.cloud.security:java-security": [
+ "com.sap.cloud.security.adapter.spring",
+ "com.sap.cloud.security.servlet",
+ "com.sap.cloud.security.token",
+ "com.sap.cloud.security.token.validation",
+ "com.sap.cloud.security.token.validation.validators",
+ "com.sap.cloud.security.x509"
+ ],
+ "org.json:json": [
+ "org.json"
+ ]
+ },
+ "repositories": {
+ "https://repo1.maven.org/maven2/": [
+ "com.fasterxml.jackson.core:jackson-annotations",
+ "com.fasterxml.jackson.core:jackson-annotations:jar:sources",
+ "com.fasterxml.jackson.core:jackson-core",
+ "com.fasterxml.jackson.core:jackson-core:jar:sources",
+ "com.fasterxml.jackson.core:jackson-databind",
+ "com.fasterxml.jackson.core:jackson-databind:jar:sources",
+ "com.github.scribejava:scribejava-apis",
+ "com.github.scribejava:scribejava-apis:jar:sources",
+ "com.github.scribejava:scribejava-core",
+ "com.github.scribejava:scribejava-core:jar:sources",
+ "com.sap.cloud.environment.servicebinding.api:java-access-api",
+ "com.sap.cloud.environment.servicebinding.api:java-access-api:jar:sources",
+ "com.sap.cloud.environment.servicebinding.api:java-consumption-api",
+ "com.sap.cloud.environment.servicebinding.api:java-consumption-api:jar:sources",
+ "com.sap.cloud.environment.servicebinding.api:java-core-api",
+ "com.sap.cloud.environment.servicebinding.api:java-core-api:jar:sources",
+ "com.sap.cloud.environment.servicebinding:java-sap-service-operator",
+ "com.sap.cloud.environment.servicebinding:java-sap-service-operator:jar:sources",
+ "com.sap.cloud.environment.servicebinding:java-sap-vcap-services",
+ "com.sap.cloud.environment.servicebinding:java-sap-vcap-services:jar:sources",
+ "com.sap.cloud.security.xsuaa:token-client",
+ "com.sap.cloud.security.xsuaa:token-client:jar:sources",
+ "com.sap.cloud.security:env",
+ "com.sap.cloud.security:env:jar:sources",
+ "com.sap.cloud.security:java-api",
+ "com.sap.cloud.security:java-api:jar:sources",
+ "com.sap.cloud.security:java-security",
+ "com.sap.cloud.security:java-security:jar:sources",
+ "org.json:json",
+ "org.json:json:jar:sources"
+ ]
+ },
+ "services": {
+ "com.fasterxml.jackson.core:jackson-core": {
+ "com.fasterxml.jackson.core.JsonFactory": [
+ "com.fasterxml.jackson.core.JsonFactory"
+ ]
+ },
+ "com.fasterxml.jackson.core:jackson-core:jar:sources": {
+ "com.fasterxml.jackson.core.JsonFactory": [
+ "com.fasterxml.jackson.core.JsonFactory"
+ ]
+ },
+ "com.fasterxml.jackson.core:jackson-databind": {
+ "com.fasterxml.jackson.core.ObjectCodec": [
+ "com.fasterxml.jackson.databind.ObjectMapper"
+ ]
+ },
+ "com.fasterxml.jackson.core:jackson-databind:jar:sources": {
+ "com.fasterxml.jackson.core.ObjectCodec": [
+ "com.fasterxml.jackson.databind.ObjectMapper"
+ ]
+ },
+ "com.github.scribejava:scribejava-core": {
+ "com.github.scribejava.core.httpclient.HttpClientProvider": [
+ "com.github.scribejava.core.httpclient.jdk.JDKHttpProvider"
+ ]
+ },
+ "com.github.scribejava:scribejava-core:jar:sources": {
+ "com.github.scribejava.core.httpclient.HttpClientProvider": [
+ "com.github.scribejava.core.httpclient.jdk.JDKHttpProvider"
+ ]
+ },
+ "com.sap.cloud.environment.servicebinding:java-sap-service-operator": {
+ "com.sap.cloud.environment.servicebinding.api.ServiceBindingAccessor": [
+ "com.sap.cloud.environment.servicebinding.SapServiceOperatorLayeredServiceBindingAccessor",
+ "com.sap.cloud.environment.servicebinding.SapServiceOperatorServiceBindingIoAccessor"
+ ]
+ },
+ "com.sap.cloud.environment.servicebinding:java-sap-service-operator:jar:sources": {
+ "com.sap.cloud.environment.servicebinding.api.ServiceBindingAccessor": [
+ "com.sap.cloud.environment.servicebinding.SapServiceOperatorLayeredServiceBindingAccessor",
+ "com.sap.cloud.environment.servicebinding.SapServiceOperatorServiceBindingIoAccessor"
+ ]
+ },
+ "com.sap.cloud.environment.servicebinding:java-sap-vcap-services": {
+ "com.sap.cloud.environment.servicebinding.api.ServiceBindingAccessor": [
+ "com.sap.cloud.environment.servicebinding.SapVcapServicesServiceBindingAccessor"
+ ]
+ },
+ "com.sap.cloud.environment.servicebinding:java-sap-vcap-services:jar:sources": {
+ "com.sap.cloud.environment.servicebinding.api.ServiceBindingAccessor": [
+ "com.sap.cloud.environment.servicebinding.SapVcapServicesServiceBindingAccessor"
+ ]
+ },
+ "com.sap.cloud.security.xsuaa:token-client": {
+ "com.sap.cloud.security.client.HttpClientFactory": [
+ "com.sap.cloud.security.client.DefaultHttpClientFactory"
+ ]
+ },
+ "com.sap.cloud.security.xsuaa:token-client:jar:sources": {
+ "com.sap.cloud.security.client.HttpClientFactory": [
+ "com.sap.cloud.security.client.DefaultHttpClientFactory"
+ ]
+ },
+ "com.sap.cloud.security:java-security": {
+ "com.sap.cloud.security.token.TokenFactory": [
+ "com.sap.cloud.security.servlet.HybridTokenFactory"
+ ]
+ },
+ "com.sap.cloud.security:java-security:jar:sources": {
+ "com.sap.cloud.security.token.TokenFactory": [
+ "com.sap.cloud.security.servlet.HybridTokenFactory"
+ ]
+ }
+ },
+ "version": "3"
+}
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md
index 33f9bd0..717e0b8 100644
--- a/src/main/resources/Documentation/build.md
+++ b/src/main/resources/Documentation/build.md
@@ -47,32 +47,34 @@
ln -s ../../@PLUGIN@ .
```
-Put the external dependency Bazel build file into the Gerrit /plugins
-directory, replacing the existing empty one.
+Then link the plugin's module fragment into Gerrit's `plugins`
+directory, replacing the placeholder file provided by Gerrit.
+This fragment exposes the plugin's Bazel module and its external
+dependencies to the Gerrit root module when building in-tree.
```
cd gerrit/plugins
- rm external_plugin_deps.bzl
- ln -s @PLUGIN@/external_plugin_deps.bzl .
+ rm external_plugin_deps.MODULE.bazel
+ ln -s @PLUGIN@/external_plugin_deps.MODULE.bazel .
```
-From Gerrit source tree issue the command:
+From the Gerrit source tree run:
```
bazel build plugins/@PLUGIN@
```
-The output is created in
+The output is created in:
```
bazel-bin/plugins/@PLUGIN@/@PLUGIN@.jar
```
-To execute the tests run either one of:
+To execute the tests run either of:
```
+ bazel test plugins/@PLUGIN@/...
bazel test --test_tag_filters=@PLUGIN@ //...
- bazel test plugins/@PLUGIN@:@PLUGIN@_tests
```
This project can be imported into the Eclipse IDE.
diff --git a/test b/test
deleted file mode 100644
index e69de29..0000000
--- a/test
+++ /dev/null
diff --git a/tools/BUILD b/tools/BUILD
deleted file mode 100644
index 1fa2160..0000000
--- a/tools/BUILD
+++ /dev/null
@@ -1 +0,0 @@
-# Empty file - bazel treat directories with BUILD file as a package
\ No newline at end of file
diff --git a/tools/bzl/BUILD b/tools/bzl/BUILD
deleted file mode 100644
index c5ed0b7..0000000
--- a/tools/bzl/BUILD
+++ /dev/null
@@ -1 +0,0 @@
-# Empty file required by Bazel
diff --git a/tools/bzl/classpath.bzl b/tools/bzl/classpath.bzl
deleted file mode 100644
index c921d01..0000000
--- a/tools/bzl/classpath.bzl
+++ /dev/null
@@ -1,6 +0,0 @@
-load(
- "@com_googlesource_gerrit_bazlets//tools:classpath.bzl",
- _classpath_collector = "classpath_collector",
-)
-
-classpath_collector = _classpath_collector
diff --git a/tools/bzl/junit.bzl b/tools/bzl/junit.bzl
deleted file mode 100644
index 97307bd..0000000
--- a/tools/bzl/junit.bzl
+++ /dev/null
@@ -1,6 +0,0 @@
-load(
- "@com_googlesource_gerrit_bazlets//tools:junit.bzl",
- _junit_tests = "junit_tests",
-)
-
-junit_tests = _junit_tests
diff --git a/tools/bzl/maven_jar.bzl b/tools/bzl/maven_jar.bzl
deleted file mode 100644
index 35ea8ce..0000000
--- a/tools/bzl/maven_jar.bzl
+++ /dev/null
@@ -1,3 +0,0 @@
-load("@com_googlesource_gerrit_bazlets//tools:maven_jar.bzl", _maven_jar = "maven_jar")
-
-maven_jar = _maven_jar
diff --git a/tools/bzl/plugin.bzl b/tools/bzl/plugin.bzl
deleted file mode 100644
index 4d2dbdd..0000000
--- a/tools/bzl/plugin.bzl
+++ /dev/null
@@ -1,10 +0,0 @@
-load(
- "@com_googlesource_gerrit_bazlets//:gerrit_plugin.bzl",
- _gerrit_plugin = "gerrit_plugin",
- _plugin_deps = "PLUGIN_DEPS",
- _plugin_test_deps = "PLUGIN_TEST_DEPS",
-)
-
-gerrit_plugin = _gerrit_plugin
-PLUGIN_DEPS = _plugin_deps
-PLUGIN_TEST_DEPS = _plugin_test_deps
diff --git a/tools/eclipse/BUILD b/tools/eclipse/BUILD
index f744058..7acd31d 100644
--- a/tools/eclipse/BUILD
+++ b/tools/eclipse/BUILD
@@ -1,9 +1,11 @@
-load("//tools/bzl:classpath.bzl", "classpath_collector")
+load("@com_googlesource_gerrit_bazlets//tools:classpath.bzl", "classpath_collector")
classpath_collector(
name = "main_classpath_collect",
testonly = 1,
deps = [
- "//:oauth__plugin_test_deps",
+ "//:oauth__plugin",
+ "@external_plugin_deps//:com_google_gerrit_gerrit_acceptance_framework",
+ "@external_plugin_deps//:com_google_gerrit_gerrit_plugin_api",
],
)