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-site.git
commit 23b474175071074fe331bcb739987e0a0d452aad Author: Hervé Boutemy <hbout...@apache.org> AuthorDate: Sun Jun 9 19:13:08 2024 +0200 lookup component html page, update index table --- pom.xml | 8 +++ .../java/org/apache/maven/site/update/Update.java | 63 +++++++++++++++++++++- 2 files changed, 70 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 26e86750..66e7e5bc 100644 --- a/pom.xml +++ b/pom.xml @@ -79,6 +79,14 @@ <siteDirectory>${project.basedir}/content</siteDirectory> </properties> + <dependencies> + <dependency> + <groupId>org.jsoup</groupId> + <artifactId>jsoup</artifactId> + <version>1.15.3</version> + </dependency> + </dependencies> + <repositories> <repository> <!-- useful to resolve parent pom when it is a SNAPSHOT --> diff --git a/src/main/java/org/apache/maven/site/update/Update.java b/src/main/java/org/apache/maven/site/update/Update.java index aebbabcb..b02a269b 100644 --- a/src/main/java/org/apache/maven/site/update/Update.java +++ b/src/main/java/org/apache/maven/site/update/Update.java @@ -25,8 +25,13 @@ import java.nio.file.Paths; import java.util.List; import java.util.stream.Collectors; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; + /** - * Updater for /plugins/index.apt and /shared/index.apt release numbers against effective site content. + * Updater for /plugins/index.apt and /shared/index.apt release numbers against + * effective site content. */ public class Update { public static void main(String[] args) throws IOException { @@ -66,6 +71,62 @@ public class Update { } System.out.print(" " + component + " " + version + " => checking against " + url + "\33[2K\r"); + String[] result = lookupRelease(url); + + if ((result != null) && (!result[0].equals(version))) { + // found an updated version + System.out.println( + " " + component + " " + version + " => " + result[0] + " on " + result[1] + " from " + url); + cols[column] = String.format(" %-" + (cols[column].length() - 2) + "s ", result[0]); + cols[column + 1] = String.format(" %-" + (cols[column + 1].length() - 2) + "s ", result[1]); + line = String.join("|", cols); + } return line; } + + /** + * Lookup component page and extract release version and publication date + */ + private String[] lookupRelease(String url) { + Document doc; + try { + System.out.println(); + doc = Jsoup.connect(url).get(); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + + String version; + String date; + + // Fluido skin + Element links = doc.select("li#projectVersion").first(); + if (links != null) { + String txt = links.text(); + version = txt.substring(txt.lastIndexOf(' ')).trim(); + txt = doc.select("li#publishDate").first().text(); + date = txt.substring(txt.lastIndexOf(' ')).trim(); + } else { + // Stylus right or left + links = doc.select("div.xright").first(); + if (links == null) { + links = doc.select("div.xleft").first(); + } + if (links == null) { + System.out.println("could not find version in " + url); + return null; + } + String txt = links.text(); + version = txt.substring(txt.lastIndexOf(' ')).trim(); + txt = txt.substring(txt.indexOf("Last Published:") + 16); + date = txt.substring(0, 10); + } + + if (version.endsWith("-SNAPSHOT")) { + return null; + } + + return new String[] {version, date}; + } }