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();