From 21765a140705dbd6c89c77ffb974c2143a953f5c Mon Sep 17 00:00:00 2001 From: Luke Granger-Brown Date: Tue, 6 Apr 2021 17:47:48 +0100 Subject: feat(ops/gerrit-tvl): init TVL Gerrit plugin This is just going to be a grab bag of things which do TVL-specific things to Gerrit, whether that be exposing new Prolog predicates or, as I intend to do as the first thing, expose Buildkite builds as checks. Change-Id: Iaeab987a1fdbd078b85e274691c986489903bf3a Reviewed-on: https://cl.tvl.fyi/c/depot/+/2872 Tested-by: BuildkiteCI Reviewed-by: tazjin --- ops/gerrit-tvl/HttpModule.java | 14 ++++++++++++++ ops/gerrit-tvl/MANIFEST.MF | 2 ++ ops/gerrit-tvl/README.md | 6 ++++++ ops/gerrit-tvl/default.nix | 33 +++++++++++++++++++++++++++++++++ ops/gerrit-tvl/static/tvl.js | 3 +++ ops/nixos/monorepo-gerrit.nix | 2 +- 6 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 ops/gerrit-tvl/HttpModule.java create mode 100644 ops/gerrit-tvl/MANIFEST.MF create mode 100644 ops/gerrit-tvl/README.md create mode 100644 ops/gerrit-tvl/default.nix create mode 100644 ops/gerrit-tvl/static/tvl.js diff --git a/ops/gerrit-tvl/HttpModule.java b/ops/gerrit-tvl/HttpModule.java new file mode 100644 index 0000000000..6d785c0817 --- /dev/null +++ b/ops/gerrit-tvl/HttpModule.java @@ -0,0 +1,14 @@ +package su.tvl.gerrit; + +import com.google.gerrit.extensions.registration.DynamicSet; +import com.google.gerrit.extensions.webui.JavaScriptPlugin; +import com.google.gerrit.extensions.webui.WebUiPlugin; +import com.google.inject.servlet.ServletModule; + +public final class HttpModule extends ServletModule { + + @Override + protected void configureServlets() { + DynamicSet.bind(binder(), WebUiPlugin.class).toInstance(new JavaScriptPlugin("tvl.js")); + } +} diff --git a/ops/gerrit-tvl/MANIFEST.MF b/ops/gerrit-tvl/MANIFEST.MF new file mode 100644 index 0000000000..bfe4eedeb6 --- /dev/null +++ b/ops/gerrit-tvl/MANIFEST.MF @@ -0,0 +1,2 @@ +Gerrit-HttpModule: su.tvl.gerrit.HttpModule +Gerrit-PluginName: tvl diff --git a/ops/gerrit-tvl/README.md b/ops/gerrit-tvl/README.md new file mode 100644 index 0000000000..1b88600f19 --- /dev/null +++ b/ops/gerrit-tvl/README.md @@ -0,0 +1,6 @@ +# gerrit-tvl + +A Gerrit plugin that does TVL-specific things. + +You probably want to take inspiration from this rather than using it directly, +as it has a variety of TVL-ish assumptions baked into it. diff --git a/ops/gerrit-tvl/default.nix b/ops/gerrit-tvl/default.nix new file mode 100644 index 0000000000..f3bec7a3a2 --- /dev/null +++ b/ops/gerrit-tvl/default.nix @@ -0,0 +1,33 @@ +{ depot, pkgs, lib, ... }: + +let + classPath = lib.concatStringsSep ":" [ + "${depot.third_party.gerrit}/share/api/extension-api_deploy.jar" + ]; +in +pkgs.stdenvNoCC.mkDerivation rec { + name = "${pname}-${version}.jar"; + pname = "gerrit-tvl"; + version = "0.0.1"; + + src = ./.; + + nativeBuildInputs = with pkgs; [ + jdk + ]; + + buildPhase = '' + mkdir $NIX_BUILD_TOP/build + + # Build Java components. + export JAVAC="javac -cp ${classPath} -d $NIX_BUILD_TOP/build --release 11" + $JAVAC ./HttpModule.java + + # Install static files. + cp -R static $NIX_BUILD_TOP/build/static + ''; + + installPhase = '' + jar --create --file $out --manifest $src/MANIFEST.MF -C $NIX_BUILD_TOP/build . + ''; +} diff --git a/ops/gerrit-tvl/static/tvl.js b/ops/gerrit-tvl/static/tvl.js new file mode 100644 index 0000000000..f6c1c732a4 --- /dev/null +++ b/ops/gerrit-tvl/static/tvl.js @@ -0,0 +1,3 @@ +Gerrit.install(plugin => { + console.log('TVL plugin initialising'); +}); diff --git a/ops/nixos/monorepo-gerrit.nix b/ops/nixos/monorepo-gerrit.nix index 1c8564e032..61d8b71a5b 100644 --- a/ops/nixos/monorepo-gerrit.nix +++ b/ops/nixos/monorepo-gerrit.nix @@ -18,9 +18,9 @@ in { ]; plugins = with depot.third_party.gerrit_plugins; [ - checks owners oauth + depot.ops.gerrit-tvl ]; package = depot.third_party.gerrit; -- cgit 1.4.1