Skip to content

Commit

Permalink
Pull next revision operations into base class
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeff-Glatz committed Mar 30, 2022
1 parent 517d88c commit 0f092b0
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 68 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,18 @@
import static java.nio.file.Files.readAllBytes;
import static org.apache.maven.plugins.annotations.LifecyclePhase.PROCESS_RESOURCES;

@Mojo(name = "increment-revision",
@Mojo(name = "increment-pom",
aggregator = true,
threadSafe = true,
defaultPhase = PROCESS_RESOURCES)
public class IncrementRevisionMojo
extends IncrementingMojo<IncrementRevisionMojo> {
public class IncrementPomMojo
extends IncrementingMojo<IncrementPomMojo> {

@Override
public void execute()
throws MojoExecutionException, MojoFailureException {
writeIncrementedPom(next().replace(readProjectPom()));
CiVersion next = outputNextRevision();
writeIncrementedPom(next.replace(readProjectPom()));
}

private String readProjectPom()
Expand Down
67 changes: 67 additions & 0 deletions src/main/java/tools/bestquality/maven/ci/IncrementingMojo.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
package tools.bestquality.maven.ci;

import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;

import java.io.BufferedWriter;
import java.io.File;
import java.nio.file.Path;

import static java.lang.String.format;
import static java.lang.System.out;
import static java.nio.charset.StandardCharsets.UTF_8;
import static java.nio.file.Files.createDirectories;
import static java.nio.file.Files.newBufferedWriter;
import static tools.bestquality.maven.ci.CiVersion.versionFrom;
import static tools.bestquality.maven.versioning.StandardIncrementor.incrementor;

Expand All @@ -16,6 +25,15 @@ public abstract class IncrementingMojo<M extends IncrementingMojo<M>>
@Parameter(alias = "incrementor", property = "incrementor", defaultValue = "auto")
private String incrementor;

@Parameter(alias = "force-stdout", property = "force-stdout", defaultValue = "false")
private boolean forceStdout;

@Parameter(defaultValue = "${project.build.directory}/ci")
private File outputDirectory;

@Parameter(defaultValue = "next-revision.txt")
private String filename;


@SuppressWarnings("unchecked")
public M withProject(MavenProject project) {
Expand All @@ -29,6 +47,24 @@ public M withIncrementor(String incrementor) {
return (M) this;
}

@SuppressWarnings("unchecked")
public M withForceStdout(boolean forceStdout) {
this.forceStdout = forceStdout;
return (M) this;
}

@SuppressWarnings("unchecked")
public M withOutputDirectory(File outputDirectory) {
this.outputDirectory = outputDirectory;
return (M) this;
}

@SuppressWarnings("unchecked")
public M withFilename(String filename) {
this.filename = filename;
return (M) this;
}

protected CiVersion current() {
return versionFrom(project.getProperties());
}
Expand All @@ -40,4 +76,35 @@ protected CiVersion next()
info(format("Next revision is: %s", next.toExternalForm()));
return next;
}

protected CiVersion outputNextRevision()
throws MojoFailureException, MojoExecutionException {
CiVersion next = next();
if (forceStdout) {
out.print(next.toExternalForm());
out.flush();
}
writeNextRevision(next.toExternalForm());
return next;
}

Path nextRevisionPath() {
return outputDirectory.toPath()
.resolve(filename);
}

private void writeNextRevision(String revision)
throws MojoExecutionException {
Path path = nextRevisionPath();
info(format("Writing next revision to %s", path.toAbsolutePath()));
try {
createDirectories(path.getParent());
try (BufferedWriter writer = newBufferedWriter(path, UTF_8)) {
writer.append(revision);
}
} catch (Exception e) {
error(format("Failure writing next revision to: %s", path.toAbsolutePath()), e);
throw new MojoExecutionException(e.getLocalizedMessage(), e);
}
}
}
62 changes: 1 addition & 61 deletions src/main/java/tools/bestquality/maven/ci/NextRevisionMojo.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,7 @@
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;

import java.io.BufferedWriter;
import java.io.File;
import java.nio.file.Path;

import static java.lang.String.format;
import static java.lang.System.out;
import static java.nio.charset.StandardCharsets.UTF_8;
import static java.nio.file.Files.createDirectories;
import static java.nio.file.Files.newBufferedWriter;
import static org.apache.maven.plugins.annotations.LifecyclePhase.VALIDATE;

@Mojo(name = "next-revision",
Expand All @@ -23,59 +13,9 @@
public class NextRevisionMojo
extends IncrementingMojo<NextRevisionMojo> {

@Parameter(alias = "force-stdout", property = "force-stdout", defaultValue = "false")
private boolean forceStdout;

@Parameter(defaultValue = "${project.build.directory}/ci")
private File outputDirectory;

@Parameter(defaultValue = "next-revision.txt")
private String filename;


public NextRevisionMojo withForceStdout(boolean forceStdout) {
this.forceStdout = forceStdout;
return this;
}

public NextRevisionMojo withOutputDirectory(File outputDirectory) {
this.outputDirectory = outputDirectory;
return this;
}

public NextRevisionMojo withFilename(String filename) {
this.filename = filename;
return this;
}

@Override
public void execute()
throws MojoFailureException, MojoExecutionException {
CiVersion next = next();
if (forceStdout) {
out.print(next.toExternalForm());
out.flush();
}
writeNextRevision(next.toExternalForm());
}

Path nextRevisionPath() {
return outputDirectory.toPath()
.resolve(filename);
}

private void writeNextRevision(String revision)
throws MojoExecutionException {
Path path = nextRevisionPath();
info(format("Writing next revision to %s", path.toAbsolutePath()));
try {
createDirectories(path.getParent());
try (BufferedWriter writer = newBufferedWriter(path, UTF_8)) {
writer.append(revision);
}
} catch (Exception e) {
error(format("Failure writing next revision to: %s", path.toAbsolutePath()), e);
throw new MojoExecutionException(e.getLocalizedMessage(), e);
}
outputNextRevision();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,17 @@ package tools.bestquality.maven.ci
import org.apache.maven.plugin.MojoExecutionException
import tools.bestquality.maven.test.MojoSpecification

class IncrementRevisionMojoTest
class IncrementPomMojoTest
extends MojoSpecification {
IncrementRevisionMojo mojo
IncrementPomMojo mojo

@Override
def setup() {
mojo = new IncrementRevisionMojo()
mojo = new IncrementPomMojo()
.withProject(mockProject)
.withIncrementor("auto")
.withOutputDirectory(outputPath.toFile())
.withFilename("next-revision.txt")
mojo.setLog(mockLog)
}

Expand Down

0 comments on commit 0f092b0

Please sign in to comment.