Modularize creation of formula

Base step to extract generic variables that we can then reuse for
different version of gerrit in different formulas

Change-Id: Idb9a799c067bd53016e35ed3a9b55f733b551c37
diff --git a/gerrit@3.11.0.rb b/gerrit@3.11.0.rb
index 70e0937..19da31d 100644
--- a/gerrit@3.11.0.rb
+++ b/gerrit@3.11.0.rb
@@ -1,40 +1,17 @@
 # typed: false
 # frozen_string_literal: true
 
-class GerritAT3110 < Formula
-  desc ""
-  homepage "https://www.gerritcodereview.com"
-  version "3.11.0"
-  url "https://tarball.gerritforge.com/gerrit-3.11.0.tar.gz"
-  sha256 "f18c23f6c0911012ec03dbbde09788d4d6d470e977312244c416dd6e0d3b4ae1"
+require_relative "./gerritbase"
 
-  depends_on "openjdk@21"
-  depends_on "git"
-  depends_on "openssh"
-
-  def install
-    mkdir_p prefix/"plugins"
-    (prefix/"plugins").install "plugins/uploadvalidator.jar"
-    (prefix/"plugins").install "plugins/avatars-gravatar.jar"
-
-    bin.install "bin/gerrit.war"
-    lib.install "lib/out-of-the-box.jar"
-
-    mkdir_p var/"gerrit"
-    mkdir_p var/"gerrit"/"etc"
-    (var/"gerrit"/"etc").install "etc/gerrit.config"
-
-    (var/"gerrit/plugins").install_symlink Dir[prefix/"plugins/*"]
-    (var/"gerrit/lib").install_symlink Dir[lib/"*"]
-
-    system "java", "-jar", bin/"gerrit.war", "init", "-d", (var/"gerrit"), "--batch", "--install-all-plugins", "--no-auto-start"
-    ohai ""
-    ohai "Gerrit site initialized in " + (var/"gerrit")
-    ohai "---------------------------------------------------------"
-    ohai " * To start Gerrit: " + (var/"gerrit/bin/gerrit.sh start")
-    ohai " * Gerrit will then be available at http://localhost:8080"
-    ohai ""
-    ohai " * To stop  Gerrit: " + (var/"gerrit/bin/gerrit.sh stop")
-    ohai ""
+class GerritAT3110 < GerritBase
+  def self.java_version
+    "21"
   end
+
+  set_common_dependencies
+
+  version "3.11.0"
+  sha256 "f18c23f6c0911012ec03dbbde09788d4d6d470e977312244c416dd6e0d3b4ae1"
+  url generate_url(version)
+
 end
diff --git a/gerritbase.rb b/gerritbase.rb
new file mode 100644
index 0000000..7d0b010
--- /dev/null
+++ b/gerritbase.rb
@@ -0,0 +1,47 @@
+# typed: false
+# frozen_string_literal: true
+
+class GerritBase < Formula
+  def self.generate_url(version)
+    "https://tarball.gerritforge.com/gerrit-" + version + ".tar.gz"
+  end
+
+  def self.java_version
+    "17"
+  end
+
+  def self.set_common_dependencies
+    depends_on "git"
+    depends_on "openjdk@#{java_version}"
+    depends_on "openssh"
+  end
+
+  desc "Gerrit Code Review"
+  homepage "https://www.gerritcodereview.com"
+
+  def install
+    mkdir_p prefix/"plugins"
+    (prefix/"plugins").install "plugins/uploadvalidator.jar"
+    (prefix/"plugins").install "plugins/avatars-gravatar.jar"
+
+    bin.install "bin/gerrit.war"
+    lib.install "lib/out-of-the-box.jar"
+
+    mkdir_p var/"gerrit"
+    mkdir_p var/"gerrit"/"etc"
+    (var/"gerrit"/"etc").install "etc/gerrit.config"
+
+    (var/"gerrit/plugins").install_symlink Dir[prefix/"plugins/*"]
+    (var/"gerrit/lib").install_symlink Dir[lib/"*"]
+
+    system "java", "-jar", bin/"gerrit.war", "init", "-d", (var/"gerrit"), "--batch", "--install-all-plugins", "--no-auto-start"
+    ohai ""
+    ohai "Gerrit site initialized in " + (var/"gerrit")
+    ohai "---------------------------------------------------------"
+    ohai " * To start Gerrit: " + (var/"gerrit/bin/gerrit.sh start")
+    ohai " * Gerrit will then be available at http://localhost:8080"
+    ohai ""
+    ohai " * To stop  Gerrit: " + (var/"gerrit/bin/gerrit.sh stop")
+    ohai ""
+  end
+end