Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion utils/release-notes-maven-plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.eclipse.set</groupId>
<artifactId>release-notes-maven-plugin</artifactId>
<version>1.0.3</version>
<version>1.0.4</version>
<packaging>maven-plugin</packaging>

<properties>
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -14,13 +14,15 @@
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;
import java.util.Map;
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;
Expand All @@ -31,37 +33,35 @@
import org.apache.maven.plugins.annotations.Parameter;

/**
*
*
*/
@Mojo(name = "transform", requiresProject = false, threadSafe = true, defaultPhase = LifecyclePhase.PROCESS_CLASSES)
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<String, String> transformDoc(
final Map<String, List<String>> releaseNotes) {
private static Map<String, String> transformDoc(final Map<String, List<String>> releaseNotes) {
final Map<String, String> result = new LinkedHashMap<>();
int index = 0;
for (final Entry<String, List<String>> notes : releaseNotes
.entrySet()) {
result.put(notes.getKey(), createDocHeader(index, notes.getKey())
+ String.join("\n", notes.getValue()));
for (final Entry<String, List<String>> 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;

Expand All @@ -84,32 +84,42 @@ public void execute() throws MojoExecutionException, MojoFailureException {
}

private Map<String, List<String>> readReleaseNote() throws IOException {
getLog().info("Read RELASE_NOTE.md");
getLog().info("Read Version notes");

final Map<String, List<String>> 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<Path> 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();
Expand Down