This plugin is an experimentation, and as such, no guarantees are offered regarding its future.
The objective of this plugin is to simplify the step of defining custom submit rules for project owners who don't have administrative privileges. This repository contains a framework making it easier to write scripting engines, but the exact definition of an engine is still blurry. Ideally, writing a Prolog engine from scratch should be easier thanks to this plugin.
This project relies on the Bazel build system, just like the rest of the Gerrit project.
In order to use the code of this plugin, clone the project in your local clone of Gerrit, inside of the
plugins/scripting-rules directory. You then need to copy the
external_plugin_deps.bzl file from this repository inside the
~/gerrit# cd plugins # Clone the project ~/gerrit/plugins# git clone https://gerrit.googlesource.com/plugins/scripting-rules ~/gerrit/plugins# cd scripting-rules # Copy the external_plugin_deps.bzl file ~/gerrit/plugins/scripting-rules# cp external_plugin_deps.bzl ../ # Setup the Change-Id git hook. ~/gerrit/plugins/scripting-rules# f=`git rev-parse --git-dir`/hooks/commit-msg ~/gerrit/plugins/scripting-rules# curl -Lo $f https://gerrit-review.googlesource.com/tools/hooks/commit-msg ~/gerrit/plugins/scripting-rules# chmod +x $f
To build this projecy, use the
bazel build //plugins/scripting-rules command.
~/gerrit # bazel build //plugins/scripting-rules Starting local Bazel server and connecting to it... ........... INFO: Analysed target //plugins/scripting-rules:scripting-rules (169 packages loaded). INFO: Found 1 target... Target //plugins/scripting-rules:scripting-rules up-to-date: bazel-genfiles/plugins/scripting-rules/scripting-rules.jar INFO: Elapsed time: 11.823s, Critical Path: 3.97s INFO: 82 processes: 77 remote cache hit, 3 linux-sandbox, 2 worker. INFO: Build completed successfully, 90 total actions
The target is the plugin's jar file, in this case it is stored in
To run all the tests, use the
bazel test //plugins/scripting-rules/... command.
~/gerrit # bazel test //plugins/scripting-rules/... INFO: Analysed 2 targets (76 packages loaded). INFO: Found 2 test targets... INFO: Elapsed time: 2.823s, Critical Path: 1.43s INFO: 40 processes: 35 remote cache hit, 3 linux-sandbox, 2 worker. INFO: Build completed successfully, 43 total actions //plugins/scripting-rules/javatests/com/googlesource/gerrit/plugins/scripting/rules/engines:engines PASSED in 0.2s //plugins/scripting-rules/javatests/com/googlesource/gerrit/plugins/scripting/rules/utils:utils PASSED in 0.5s Executed 2 out of 2 tests: 2 tests pass. INFO: Build completed successfully, 43 total actions
Engines are defined in the
plugins/scripting-rules/java/com/googlesource/gerrit/plugins/scripting/rules/engines/ directory, and must implement the
The engine name (which is the directory name) should also be enabled in the
plugin.bzl file. This extra step makes it easier to enable or completely disable engines on the fly.
In order to be used, the Engine must be declared in the
EnginesModule file, either by installing a module or by adding the engine to the DynamicSet: