This is an automated email from the ASF dual-hosted git repository.

hboutemy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-dist-tool.git


The following commit(s) were added to refs/heads/master by this push:
     new 70c45e9  add requirements history
70c45e9 is described below

commit 70c45e936607e67677856f3ac8e40b15cb9c2fe1
Author: HervĂ© Boutemy <[email protected]>
AuthorDate: Wed Jun 7 08:09:48 2023 +0200

    add requirements history
---
 .../dist/tools/prerequisites/GetPrerequisites.java | 36 +++++++++++++++++++---
 .../ListPluginsPrerequisitesReport.java            | 28 +++++++++++++++--
 .../tools/prerequisites/PluginPrerequisites.java   | 32 ++++++++++++++++++-
 3 files changed, 87 insertions(+), 9 deletions(-)

diff --git 
a/src/main/java/org/apache/maven/dist/tools/prerequisites/GetPrerequisites.java 
b/src/main/java/org/apache/maven/dist/tools/prerequisites/GetPrerequisites.java
index eea9255..147dbbc 100644
--- 
a/src/main/java/org/apache/maven/dist/tools/prerequisites/GetPrerequisites.java
+++ 
b/src/main/java/org/apache/maven/dist/tools/prerequisites/GetPrerequisites.java
@@ -134,6 +134,10 @@ public class GetPrerequisites {
             releaseDate = text.substring(index + 16).substring(0, 10);
         }
 
+        // select table(s):
+        // - first one is the goals table
+        // - second one is system requirements
+        // - (optional) third one is system requirements history
         Elements select = doc.select("table.bodyTable"); // Stylus skin
 
         if (select.size() < 1) {
@@ -142,12 +146,13 @@ public class GetPrerequisites {
 
         if (select.size() < 1) {
             System.err.println("Could not find expected plugin info for " + 
url);
-            return new PluginPrerequisites(pluginName, "?", "?", "?", "?");
+            return new PluginPrerequisites(pluginName, "?", "?", "?", "?", 0, 
null);
         }
 
-        Element tableInfo = select.get(1);
-        Elements elementsByAttributeA = 
tableInfo.getElementsByAttributeValue("class", "a");
-        Elements elementsByAttributeB = 
tableInfo.getElementsByAttributeValue("class", "b");
+        // extract system requirements
+        Element systemRequirementsTable = select.get(1);
+        Elements elementsByAttributeA = 
systemRequirementsTable.getElementsByAttributeValue("class", "a");
+        Elements elementsByAttributeB = 
systemRequirementsTable.getElementsByAttributeValue("class", "b");
         String mavenVersion = elementsByAttributeA.first().text();
         String jdkVersion = elementsByAttributeB.first().text();
 
@@ -171,7 +176,28 @@ public class GetPrerequisites {
             pluginVersion = pluginVersion.substring(0, 
pluginVersion.indexOf("</version>"));
         }
 
-        return new PluginPrerequisites(pluginName, pluginVersion, releaseDate, 
mavenVersion, jdkVersion);
+        // extract system requirements history
+        int systemRequirementsHistorySize = 0;
+        String oldest = null;
+        if (select.size() > 2) {
+            Elements systemRequirementsHistoryTrs = select.get(2).select("tr");
+            systemRequirementsHistorySize = 
systemRequirementsHistoryTrs.size() - 1;
+
+            Elements td = systemRequirementsHistoryTrs
+                    .get(systemRequirementsHistorySize)
+                    .select("td");
+            oldest = td.get(0).text() + " requires Maven " + td.get(1).text() 
+ ", JDK "
+                    + td.get(2).text();
+        }
+
+        return new PluginPrerequisites(
+                pluginName,
+                pluginVersion,
+                releaseDate,
+                mavenVersion,
+                jdkVersion,
+                systemRequirementsHistorySize,
+                oldest);
     }
 
     /**
diff --git 
a/src/main/java/org/apache/maven/dist/tools/prerequisites/ListPluginsPrerequisitesReport.java
 
b/src/main/java/org/apache/maven/dist/tools/prerequisites/ListPluginsPrerequisitesReport.java
index 5d488b9..0679b34 100644
--- 
a/src/main/java/org/apache/maven/dist/tools/prerequisites/ListPluginsPrerequisitesReport.java
+++ 
b/src/main/java/org/apache/maven/dist/tools/prerequisites/ListPluginsPrerequisitesReport.java
@@ -83,6 +83,10 @@ public class ListPluginsPrerequisitesReport extends 
AbstractMavenReport {
                             + GetPrerequisites.PLUGIN_NAMES.length + ")");
                     sink.tableHeaderCell_();
 
+                    sink.tableHeaderCell();
+                    sink.rawText("Plugin Documentation");
+                    sink.tableHeaderCell_();
+
                     sink.tableHeaderCell();
                     sink.rawText("Maven Version");
                     sink.tableHeaderCell_();
@@ -95,16 +99,22 @@ public class ListPluginsPrerequisitesReport extends 
AbstractMavenReport {
                     sink.rawText("Release Date");
                     sink.tableHeaderCell_();
 
+                    sink.tableHeaderCell();
+                    sink.rawText("Requirements History");
+                    sink.tableHeaderCell_();
+
                     sink.tableRow_();
 
                     for (PluginPrerequisites pluginPrerequisites : 
pluginsPrerequisites) {
                         sink.tableRow();
                         sink.tableCell();
-                        
sink.link(prerequisites.getPluginInfoUrl(pluginPrerequisites.getPluginName()));
                         sink.text(pluginPrerequisites.getPluginName());
-                        sink.link_();
-                        sink.text(" ");
+                        sink.tableCell_();
+
+                        sink.tableCell();
+                        
sink.link(prerequisites.getPluginInfoUrl(pluginPrerequisites.getPluginName()));
                         sink.text(pluginPrerequisites.getPluginVersion());
+                        sink.link_();
                         sink.tableCell_();
 
                         sink.tableCell();
@@ -118,6 +128,18 @@ public class ListPluginsPrerequisitesReport extends 
AbstractMavenReport {
                         sink.tableCell();
                         sink.text(pluginPrerequisites.getReleaseDate());
                         sink.tableCell_();
+
+                        sink.tableCell();
+                        int history = 
pluginPrerequisites.getSystemRequirementsHistory();
+                        if (history > 0) {
+                            
sink.link(prerequisites.getPluginInfoUrl(pluginPrerequisites.getPluginName())
+                                    + "#system-requirements-history");
+                            sink.text(String.valueOf(history));
+                            sink.link_();
+                            sink.text(", up to " + 
pluginPrerequisites.getOldestRequirements());
+                        }
+                        sink.tableCell_();
+
                         sink.tableRow_();
                     }
                 });
diff --git 
a/src/main/java/org/apache/maven/dist/tools/prerequisites/PluginPrerequisites.java
 
b/src/main/java/org/apache/maven/dist/tools/prerequisites/PluginPrerequisites.java
index a4d71ea..9c6af96 100644
--- 
a/src/main/java/org/apache/maven/dist/tools/prerequisites/PluginPrerequisites.java
+++ 
b/src/main/java/org/apache/maven/dist/tools/prerequisites/PluginPrerequisites.java
@@ -37,6 +37,10 @@ public class PluginPrerequisites {
 
     private String jdkVersion;
 
+    private int systemRequirementsHistory;
+
+    private String oldestRequirements;
+
     /**
      * <p>Constructor for PluginPrerequisites.</p>
      *
@@ -47,12 +51,20 @@ public class PluginPrerequisites {
      * @param jdkVersion a {@link java.lang.String} object
      */
     public PluginPrerequisites(
-            String pluginName, String pluginVersion, String releaseDate, 
String mavenVersion, String jdkVersion) {
+            String pluginName,
+            String pluginVersion,
+            String releaseDate,
+            String mavenVersion,
+            String jdkVersion,
+            int systemRequirementsHistory,
+            String oldestRequirements) {
         this.pluginName = pluginName;
         this.pluginVersion = pluginVersion;
         this.releaseDate = releaseDate;
         this.mavenVersion = new DefaultArtifactVersion(mavenVersion);
         this.jdkVersion = jdkVersion;
+        this.systemRequirementsHistory = systemRequirementsHistory;
+        this.oldestRequirements = oldestRequirements;
     }
 
     /**
@@ -126,4 +138,22 @@ public class PluginPrerequisites {
     public void setPluginName(String pluginName) {
         this.pluginName = pluginName;
     }
+
+    /**
+     * <p>Getter for the field <code>systemRequirementsHistory</code>.</p>
+     *
+     * @return an int
+     */
+    public int getSystemRequirementsHistory() {
+        return systemRequirementsHistory;
+    }
+
+    /**
+     * <p>Getter for the field <code>oldestRequirements</code>.</p>
+     *
+     * @return a {@link java.lang.String} object
+     */
+    public String getOldestRequirements() {
+        return oldestRequirements;
+    }
 }

Reply via email to