diff --git a/utils/release-notes-maven-plugin/pom.xml b/utils/release-notes-maven-plugin/pom.xml index 833e328..023b5e4 100644 --- a/utils/release-notes-maven-plugin/pom.xml +++ b/utils/release-notes-maven-plugin/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.eclipse.set release-notes-maven-plugin - 1.0.3 + 1.0.4 maven-plugin diff --git a/utils/release-notes-maven-plugin/src/main/java/org/eclipse/set/planpromavenplugin/MavenReleaseNotesMojo.java b/utils/release-notes-maven-plugin/src/main/java/org/eclipse/set/planpromavenplugin/MavenReleaseNotesMojo.java index 259a20a..17345e6 100644 --- a/utils/release-notes-maven-plugin/src/main/java/org/eclipse/set/planpromavenplugin/MavenReleaseNotesMojo.java +++ b/utils/release-notes-maven-plugin/src/main/java/org/eclipse/set/planpromavenplugin/MavenReleaseNotesMojo.java @@ -1,6 +1,6 @@ /** * Copyright (c) 2023 DB Netz AG and others. - * + * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at @@ -14,6 +14,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; @@ -21,6 +22,7 @@ import java.util.Map.Entry; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Stream; import org.apache.commons.io.FileUtils; import org.apache.maven.plugin.AbstractMojo; @@ -31,7 +33,7 @@ import org.apache.maven.plugins.annotations.Parameter; /** - * + * */ @Mojo(name = "transform", requiresProject = false, threadSafe = true, defaultPhase = LifecyclePhase.PROCESS_CLASSES) public class MavenReleaseNotesMojo extends AbstractMojo { @@ -39,29 +41,27 @@ public class MavenReleaseNotesMojo extends AbstractMojo { private static String versionNumberReg = "^##\\s*\\d+\\.\\d+(\\.\\d+)?"; @SuppressWarnings("boxing") - private static String createDocHeader(final int index, - final String versionNumber) { - return String.format( - "---\ntitle: \"%s\"\nanchor: \"%s\"\nWeight: %d\n---\n", - versionNumber, versionNumber, index + 1); + private static String createDocHeader(final int index, final String versionNumber) { + return String.format("---\ntitle: \"%s\"\nanchor: \"%s\"\nWeight: %d\n---\n", versionNumber, versionNumber, + index + 1); } - private static Map transformDoc( - final Map> releaseNotes) { + private static Map transformDoc(final Map> releaseNotes) { final Map result = new LinkedHashMap<>(); int index = 0; - for (final Entry> notes : releaseNotes - .entrySet()) { - result.put(notes.getKey(), createDocHeader(index, notes.getKey()) - + String.join("\n", notes.getValue())); + for (final Entry> notes : releaseNotes.entrySet()) { + result.put(notes.getKey(), createDocHeader(index, notes.getKey()) + String.join("\n", notes.getValue())); index++; } return result; } - @Parameter(property = "notesPath", required = true) + @Parameter(property = "notesPath", required = false) private String notesPath; + @Parameter(property = "notesDir", required = false) + private String notesDir; + @Parameter(property = "outDir", required = true) private String outDir; @@ -84,32 +84,42 @@ public void execute() throws MojoExecutionException, MojoFailureException { } private Map> readReleaseNote() throws IOException { - getLog().info("Read RELASE_NOTE.md"); + getLog().info("Read Version notes"); + final Map> result = new LinkedHashMap<>(); - try (final BufferedReader reader = Files - .newBufferedReader(Paths.get(notesPath))) { - String currentVersion = ""; - final Pattern pattern = Pattern.compile(versionNumberReg); - while (reader.ready()) { - final String line = reader.readLine(); - if (line.isEmpty()) { - continue; - } + Iterator versionNotes = null; + if (notesDir != null) { + versionNotes = Files.walk(Paths.get(notesDir)).filter(file -> !file.equals(Paths.get(notesDir))).iterator(); + } else if (notesPath != null) { + versionNotes = Stream.of(Paths.get(notesPath)).iterator(); + } else { + throw new IllegalArgumentException("Missing path of news"); + } + while (versionNotes.hasNext()) { + Path next = versionNotes.next(); + try (final BufferedReader reader = Files.newBufferedReader(next)) { + String currentVersion = ""; + final Pattern pattern = Pattern.compile(versionNumberReg); + while (reader.ready()) { + final String line = reader.readLine(); + if (line.isEmpty()) { + continue; + } - final Matcher matcher = pattern.matcher(line); - if (matcher.matches()) { - currentVersion = line.replace("#", "").trim(); - result.put(currentVersion, new LinkedList<>()); - } else if (!currentVersion.isEmpty()) { - result.get(currentVersion).add(line); + final Matcher matcher = pattern.matcher(line); + if (matcher.matches()) { + currentVersion = line.replace("#", "").trim(); + result.put(currentVersion, new LinkedList<>()); + } else if (!currentVersion.isEmpty()) { + result.get(currentVersion).add(line); + } } } } return result; } - private void writeFile(final String versionNumber, final String doc) - throws IOException { + private void writeFile(final String versionNumber, final String doc) throws IOException { final Path path = Paths.get(outDir, versionNumber, "_index.md"); if (!Files.exists(path.getParent())) { path.getParent().toFile().mkdirs();