Added directory and extension options

This commit is contained in:
Erik C. Thauvin 2023-11-12 16:46:30 -08:00
parent b56f684ac8
commit f8003c72f0
10 changed files with 130 additions and 54 deletions

View file

@ -115,12 +115,13 @@ public class GeneratedVersionOperation extends AbstractOperation<GeneratedVersio
/**
* Writes the project version class in the given directory.
*/
public static void writeTemplate(Template template, File directory, GeneratedVersion gv) {
public static void writeTemplate(Template template, GeneratedVersion gv) {
if (gv.getPackageName() != null) {
gv.setClassFile(Path.of(directory.getAbsolutePath(),
gv.getPackageName().replace(".", File.separator), gv.getClassName() + ".java").toFile());
gv.setClassFile(Path.of(gv.getDirectory().getAbsolutePath(),
gv.getPackageName().replace(".", File.separator), gv.getClassName()
+ gv.getExtension()).toFile());
} else {
gv.setClassFile(Path.of(directory.getAbsolutePath(), gv.getClassName() + ".java").toFile());
gv.setClassFile(Path.of(gv.getDirectory().getAbsolutePath(), gv.getClassName() + ".java").toFile());
}
if (!gv.getClassFile().getParentFile().exists()) {
@ -135,8 +136,8 @@ public class GeneratedVersionOperation extends AbstractOperation<GeneratedVersio
var updated = gv.getClassFile().exists();
FileUtils.writeString(template.getContent(), gv.getClassFile());
if (LOGGER.isLoggable(Level.INFO)) {
LOGGER.log(Level.INFO, "Generated version class has been {0} to {1}: {2}",
new String[]{updated ? "updated" : "created", gv.getProject().version().toString(),
LOGGER.log(Level.INFO, "Generated version ({0}) class has been {1}: {2}",
new String[]{gv.getProject().version().toString(), updated ? "updated" : "created",
gv.getClassFile().toString()});
}
} catch (IOException e) {
@ -162,6 +163,14 @@ public class GeneratedVersionOperation extends AbstractOperation<GeneratedVersio
return this;
}
/**
* Sets the destination directory.
*/
public GeneratedVersionOperation directory(File directory) {
generatedVersion.setDirectory(directory);
return this;
}
/**
* Generates a version data class for this project.
*/
@ -172,7 +181,15 @@ public class GeneratedVersionOperation extends AbstractOperation<GeneratedVersio
}
var template = buildTemplate(generatedVersion);
writeTemplate(template, generatedVersion.getProject().srcMainJavaDirectory(), generatedVersion);
writeTemplate(template, generatedVersion);
}
/**
* Sets the file extension. (e.g. {@code .java})
*/
public GeneratedVersionOperation extension(String extension) {
generatedVersion.setExtension(extension);
return this;
}
/**
@ -180,6 +197,7 @@ public class GeneratedVersionOperation extends AbstractOperation<GeneratedVersio
*/
public GeneratedVersionOperation fromProject(BaseProject project) {
generatedVersion.setProject(project);
generatedVersion.setDirectory(project.srcMainJavaDirectory());
return this;
}