diff --git a/.github/workflows/bld.yml b/.github/workflows/bld.yml
index 94c08ea..c0ba763 100644
--- a/.github/workflows/bld.yml
+++ b/.github/workflows/bld.yml
@@ -1,16 +1,14 @@
name: bld-ci
-on: [ push, pull_request, workflow_dispatch ]
+on: [push, pull_request, workflow_dispatch]
jobs:
build-bld-project:
+ runs-on: ubuntu-latest
+
strategy:
matrix:
- java-version: [ 17, 21, 24 ]
- kotlin-version: [ 1.9.25, 2.0.21, 2.1.20 ]
- os: [ ubuntu-latest, windows-latest, macos-latest ]
-
- runs-on: ${{ matrix.os }}
+ java-version: [17, 21, 22]
steps:
- name: Checkout source repository
@@ -24,16 +22,11 @@ jobs:
distribution: "zulu"
java-version: ${{ matrix.java-version }}
- - name: Download dependencies [examples]
- working-directory: examples
+ - name: Grant execute permission for bld
+ run: chmod +x bld
+
+ - name: Download the dependencies
run: ./bld download
- - name: Compile and run [examples]
- working-directory: examples
- run: ./bld compile run
-
- - name: Download dependencies
- run: ./bld download
-
- - name: Run tests
- run: ./bld compile test
\ No newline at end of file
+ - name: Run tests with bld
+ run: ./bld compile test
diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml
index 508f6a5..bf43624 100644
--- a/.github/workflows/pages.yml
+++ b/.github/workflows/pages.yml
@@ -47,11 +47,11 @@ jobs:
uses: actions/configure-pages@v3
- name: Upload artifact
- uses: actions/upload-pages-artifact@v3
+ uses: actions/upload-pages-artifact@v1
with:
# Upload generated Javadocs repository
path: "build/javadoc/"
- name: Deploy to GitHub Pages
id: deployment
- uses: actions/deploy-pages@v4
+ uses: actions/deploy-pages@v1
diff --git a/.idea/bld.xml b/.idea/bld.xml
deleted file mode 100644
index 6600cee..0000000
--- a/.idea/bld.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/copyright/Apache_License.xml b/.idea/copyright/Apache_License.xml
index 4446c15..ade80da 100644
--- a/.idea/copyright/Apache_License.xml
+++ b/.idea/copyright/Apache_License.xml
@@ -1,6 +1,6 @@
-
+
-
\ No newline at end of file
+
diff --git a/.idea/icon.svg b/.idea/icon.svg
deleted file mode 100644
index 81220b4..0000000
--- a/.idea/icon.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
diff --git a/.idea/libraries/bld.xml b/.idea/libraries/bld.xml
index 153a060..a2969be 100644
--- a/.idea/libraries/bld.xml
+++ b/.idea/libraries/bld.xml
@@ -2,12 +2,12 @@
-
+
-
+
diff --git a/.idea/libraries/compile.xml b/.idea/libraries/compile.xml
index 99cc0c0..9bd86aa 100644
--- a/.idea/libraries/compile.xml
+++ b/.idea/libraries/compile.xml
@@ -7,7 +7,7 @@
-
-
+
+
\ No newline at end of file
diff --git a/.idea/libraries/runtime.xml b/.idea/libraries/runtime.xml
index d4069f2..2ae5c4b 100644
--- a/.idea/libraries/runtime.xml
+++ b/.idea/libraries/runtime.xml
@@ -8,7 +8,7 @@
-
-
+
+
\ No newline at end of file
diff --git a/.idea/libraries/test.xml b/.idea/libraries/test.xml
index 57ed5ef..b80486a 100644
--- a/.idea/libraries/test.xml
+++ b/.idea/libraries/test.xml
@@ -8,7 +8,7 @@
-
-
+
+
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index ba429d0..d136e4d 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -9,7 +9,7 @@
],
"java.configuration.updateBuildConfiguration": "automatic",
"java.project.referencedLibraries": [
- "${HOME}/.bld/dist/bld-2.2.1.jar",
+ "${HOME}/.bld/dist/bld-1.9.1.jar",
"lib/**/*.jar"
]
}
diff --git a/README.md b/README.md
index 23c69a2..c128f29 100755
--- a/README.md
+++ b/README.md
@@ -3,20 +3,12 @@
[](https://opensource.org/licenses/Apache-2.0)
[](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
-[](https://rife2.com/bld)
+[](https://rife2.com/bld)
[](https://repo.rife2.com/#/releases/com/uwyn/rife2/bld-generated-version)
[](https://repo.rife2.com/#/snapshots/com/uwyn/rife2/bld-generated-version)
[](https://github.com/rife2/bld-generated-version/actions/workflows/bld.yml)
-To install the latest version, add the following to the `lib/bld/bld-wrapper.properties` file:
-
-```properties
-bld.extension-generated-version=com.uwyn.rife2:bld-generated-version
-```
-
-For more information, please refer to the [extensions](https://github.com/rife2/bld/wiki/Extensions) documentation.
-
-## Generate Version Data Class
+To install, please refer to the [extensions documentation](https://github.com/rife2/bld/wiki/Extensions).
To automatically create a generated version class using the default template in your project on compile, add the following to your build file:
```java
@@ -74,12 +66,12 @@ public void genver() throws Exception {
.projectName("My App")
.packageName("com.example.myapp")
.className("MyAppVersion")
- .classTemplate("my_app_version.txt")
+ .classTemplate(new File(workDirectory, "myversion.txt"))
.execute();
}
```
```java
-// my_app_version.txt
+// myversion.txt
package {{v packageName/}};
diff --git a/config/pmd.xml b/config/pmd.xml
index 2641880..3d3203c 100644
--- a/config/pmd.xml
+++ b/config/pmd.xml
@@ -7,9 +7,9 @@
+
+
-
-
diff --git a/examples/.idea/libraries/bld.xml b/examples/.idea/libraries/bld.xml
index 153a060..a2969be 100644
--- a/examples/.idea/libraries/bld.xml
+++ b/examples/.idea/libraries/bld.xml
@@ -2,12 +2,12 @@
-
+
-
+
diff --git a/examples/.idea/libraries/compile.xml b/examples/.idea/libraries/compile.xml
index 99cc0c0..9bd86aa 100644
--- a/examples/.idea/libraries/compile.xml
+++ b/examples/.idea/libraries/compile.xml
@@ -7,7 +7,7 @@
-
-
+
+
\ No newline at end of file
diff --git a/examples/.idea/libraries/runtime.xml b/examples/.idea/libraries/runtime.xml
index d4069f2..2ae5c4b 100644
--- a/examples/.idea/libraries/runtime.xml
+++ b/examples/.idea/libraries/runtime.xml
@@ -8,7 +8,7 @@
-
-
+
+
\ No newline at end of file
diff --git a/examples/.idea/libraries/test.xml b/examples/.idea/libraries/test.xml
index 57ed5ef..b80486a 100644
--- a/examples/.idea/libraries/test.xml
+++ b/examples/.idea/libraries/test.xml
@@ -8,7 +8,7 @@
-
-
+
+
\ No newline at end of file
diff --git a/examples/.vscode/settings.json b/examples/.vscode/settings.json
index ba429d0..d136e4d 100644
--- a/examples/.vscode/settings.json
+++ b/examples/.vscode/settings.json
@@ -9,7 +9,7 @@
],
"java.configuration.updateBuildConfiguration": "automatic",
"java.project.referencedLibraries": [
- "${HOME}/.bld/dist/bld-2.2.1.jar",
+ "${HOME}/.bld/dist/bld-1.9.1.jar",
"lib/**/*.jar"
]
}
diff --git a/examples/lib/bld/bld-wrapper.jar b/examples/lib/bld/bld-wrapper.jar
index 3842a62..18ecfd4 100644
Binary files a/examples/lib/bld/bld-wrapper.jar and b/examples/lib/bld/bld-wrapper.jar differ
diff --git a/examples/lib/bld/bld-wrapper.properties b/examples/lib/bld/bld-wrapper.properties
index bc257d2..d315b82 100644
--- a/examples/lib/bld/bld-wrapper.properties
+++ b/examples/lib/bld/bld-wrapper.properties
@@ -1,6 +1,6 @@
bld.downloadExtensionJavadoc=false
bld.downloadExtensionSources=true
-bld.downloadLocation=
-bld.extension-gv=com.uwyn.rife2:bld-generated-version:1.0.1
+bld.extensions=com.uwyn.rife2:bld-generated-version:0.9.6
bld.repositories=MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
-bld.version=2.2.1
+bld.downloadLocation=
+bld.version=1.9.1
diff --git a/examples/my_app_version.txt b/examples/my_app_version.txt
deleted file mode 100644
index 3d4c223..0000000
--- a/examples/my_app_version.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-package {{v packageName/}};
-
-import java.util.Date;
-
-public final class {{v className/}} implements Comparable<{{v className/}}> {
- public static final String PROJECT = "{{v project/}}";
- public static final Date BUILD_DATE = new Date({{v epoch/}}L);
- public static final int MAJOR = {{v major/}};
- public static final int MINOR = {{v minor/}};
- public static final int REVISION = {{v revision/}};
- public static final String QUALIFIER = "{{v qualifier/}}";
- public static final String VERSION = "{{v version/}}";
-
- private {{v className/}}() {
- // no-op
- }
-
- @Override
- public int compareTo({{v className/}} other) {
- if (MAJOR != other.MAJOR) {
- return Integer.compare(MAJOR, other.MAJOR);
- } else if (MINOR != other.MINOR) {
- return Integer.compare(MINOR, other.MINOR);
- } else if (REVISION != other.REVISION) {
- return Integer.compare(REVISION, other.REVISION);
- } else {
- return QUALIFIER.compareTo(other.QUALIFIER);
- }
- }
-}
\ No newline at end of file
diff --git a/examples/version.txt b/examples/myversion.txt
similarity index 100%
rename from examples/version.txt
rename to examples/myversion.txt
diff --git a/examples/src/bld/java/com/example/SampleBuild.java b/examples/src/bld/java/com/example/SampleBuild.java
index c9303a6..ef51aad 100644
--- a/examples/src/bld/java/com/example/SampleBuild.java
+++ b/examples/src/bld/java/com/example/SampleBuild.java
@@ -4,6 +4,7 @@ import rife.bld.BuildCommand;
import rife.bld.Project;
import rife.bld.extension.GeneratedVersionOperation;
+import java.io.File;
import java.util.List;
import static rife.bld.dependencies.Repository.MAVEN_CENTRAL;
@@ -27,8 +28,8 @@ public class SampleBuild extends Project {
repositories = List.of(MAVEN_CENTRAL, RIFE2_RELEASES);
scope(test)
- .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 1)))
- .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 1)));
+ .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 10, 2)))
+ .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 2)));
}
public static void main(String[] args) {
@@ -46,8 +47,7 @@ public class SampleBuild extends Project {
new GeneratedVersionOperation()
.fromProject(this)
// .projectName("My App")
-// .classTemplate("my_app_version.txt")
-// .classTemplate("version.txt")
+// .classTemplate(new File(workDirectory, "myversion.txt"))
.execute();
}
}
diff --git a/examples/src/main/java/com/example/GeneratedVersion.java b/examples/src/main/java/com/example/GeneratedVersion.java
index 64ecb97..82cafb7 100644
--- a/examples/src/main/java/com/example/GeneratedVersion.java
+++ b/examples/src/main/java/com/example/GeneratedVersion.java
@@ -1,4 +1,4 @@
-/**
+/*
* This file is automatically generated.
* Do not modify! -- ALL CHANGES WILL BE ERASED!
*/
@@ -12,7 +12,7 @@ import java.util.Date;
*/
public final class GeneratedVersion {
public static final String PROJECT = "Sample";
- public static final Date BUILD_DATE = new Date(1736843939053L);
+ public static final Date BUILD_DATE = new Date(1713398927971L);
public static final int MAJOR = 1;
public static final int MINOR = 0;
public static final int REVISION = 1;
diff --git a/lib/bld/bld-wrapper.jar b/lib/bld/bld-wrapper.jar
index e26a2ae..b4504b3 100644
Binary files a/lib/bld/bld-wrapper.jar and b/lib/bld/bld-wrapper.jar differ
diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties
index 42fad1d..6e26fef 100644
--- a/lib/bld/bld-wrapper.properties
+++ b/lib/bld/bld-wrapper.properties
@@ -1,6 +1,7 @@
bld.downloadExtensionJavadoc=false
bld.downloadExtensionSources=true
-bld.downloadLocation=
-bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.2.2
+bld.extension-pmd=com.uwyn.rife2:bld-pmd:0.9.9
+bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.5
bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
-bld.version=2.2.1
+bld.downloadLocation=
+bld.version=1.9.1
diff --git a/src/bld/java/rife/bld/extension/GeneratedVersionOperationBuild.java b/src/bld/java/rife/bld/extension/GeneratedVersionOperationBuild.java
index d355d07..f50c17e 100644
--- a/src/bld/java/rife/bld/extension/GeneratedVersionOperationBuild.java
+++ b/src/bld/java/rife/bld/extension/GeneratedVersionOperationBuild.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2025 the original author or authors.
+ * Copyright 2023-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,9 +22,11 @@ import rife.bld.publish.PublishDeveloper;
import rife.bld.publish.PublishLicense;
import rife.bld.publish.PublishScm;
+import java.io.IOException;
import java.util.List;
-import static rife.bld.dependencies.Repository.*;
+import static rife.bld.dependencies.Repository.MAVEN_CENTRAL;
+import static rife.bld.dependencies.Repository.RIFE2_RELEASES;
import static rife.bld.dependencies.Scope.compile;
import static rife.bld.dependencies.Scope.test;
import static rife.bld.operations.JavadocOptions.DocLinkOption.NO_MISSING;
@@ -34,21 +36,19 @@ public class GeneratedVersionOperationBuild extends Project {
public GeneratedVersionOperationBuild() {
pkg = "rife.bld.extension";
name = "GeneratedVersionOperation";
- version = version(1, 0, 1);
+ version = version(0, 9, 6);
javaRelease = 17;
-
downloadSources = true;
autoDownloadPurge = true;
-
- repositories = List.of(MAVEN_CENTRAL, RIFE2_RELEASES, RIFE2_SNAPSHOTS);
+ repositories = List.of(MAVEN_CENTRAL, RIFE2_RELEASES);
scope(compile)
- .include(dependency("com.uwyn.rife2", "bld", version(2, 2, 1)));
+ .include(dependency("com.uwyn.rife2", "bld", version(1, 9, 1)));
scope(test)
- .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 1)))
- .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 1)))
- .include(dependency("org.assertj", "assertj-core", version(3, 27, 3)));
+ .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 10, 2)))
+ .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 2)))
+ .include(dependency("org.assertj", "assertj-core", version(3, 26, 0)));
precompileOperation()
.templateTypes(TXT);
@@ -63,26 +63,28 @@ public class GeneratedVersionOperationBuild extends Project {
publishOperation()
.repositories(version.isSnapshot() ? repository("rife2-snapshot") : repository("rife2"))
- .repository(repository("github"))
.info()
.groupId("com.uwyn.rife2")
.artifactId("bld-generated-version")
.description("bld Extension to Generate Project Version Data")
.url("https://github.com/rife2/generated-version")
- .developer(new PublishDeveloper()
- .id("ethauvin")
- .name("Erik C. Thauvin")
- .email("erik@thauvin.net")
- .url("https://erik.thauvin.net/")
+ .developer(
+ new PublishDeveloper()
+ .id("ethauvin")
+ .name("Erik C. Thauvin")
+ .email("erik@thauvin.net")
+ .url("https://erik.thauvin.net/")
)
- .license(new PublishLicense()
- .name("The Apache License, Version 2.0")
- .url("https://www.apache.org/licenses/LICENSE-2.0.txt")
+ .license(
+ new PublishLicense()
+ .name("The Apache License, Version 2.0")
+ .url("https://www.apache.org/licenses/LICENSE-2.0.txt")
)
- .scm(new PublishScm()
- .connection("scm:git:https://github.com/rife2/generated-version.git")
- .developerConnection("scm:git:git@github.com:rife2/generated-version.git")
- .url("https://github.com/rife2/generated-version")
+ .scm(
+ new PublishScm()
+ .connection("scm:git:https://github.com/rife2/generated-version.git")
+ .developerConnection("scm:git:git@github.com:rife2/generated-version.git")
+ .url("https://github.com/rife2/generated-version")
)
.signKey(property("sign.key"))
.signPassphrase(property("sign.passphrase"));
@@ -92,8 +94,15 @@ public class GeneratedVersionOperationBuild extends Project {
new GeneratedVersionOperationBuild().start(args);
}
+ @BuildCommand(summary = "Generates JaCoCo Reports")
+ public void jacoco() throws IOException {
+ new JacocoReportOperation()
+ .fromProject(this)
+ .execute();
+ }
+
@BuildCommand(summary = "Runs PMD analysis")
- public void pmd() throws Exception {
+ public void pmd() {
new PmdOperation()
.fromProject(this)
.failOnViolation(true)
diff --git a/src/main/java/rife/bld/extension/GeneratedVersion.java b/src/main/java/rife/bld/extension/GeneratedVersion.java
index 9ae40fb..4cf1ddd 100644
--- a/src/main/java/rife/bld/extension/GeneratedVersion.java
+++ b/src/main/java/rife/bld/extension/GeneratedVersion.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2025 the original author or authors.
+ * Copyright 2023-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,16 +17,8 @@
package rife.bld.extension;
import rife.bld.BaseProject;
-import rife.resources.ResourceFinderClasspath;
-import rife.resources.ResourceFinderDirectories;
-import rife.resources.ResourceFinderGroup;
-import rife.template.Template;
-import rife.template.TemplateFactory;
-import rife.tools.FileUtils;
import java.io.File;
-import java.io.IOException;
-import java.nio.file.Path;
/**
* GeneratedVersion data class.
@@ -34,93 +26,16 @@ import java.nio.file.Path;
* @author Erik C. Thauvin
* @since 1.0
*/
+@SuppressWarnings("PMD.DataClass")
public class GeneratedVersion {
- private static final String CLASSNAME = "className";
- private static final String EPOCH = "epoch";
- private static final String MAJOR = "major";
- private static final String MINOR = "minor";
- private static final String PACKAGE_NAME = "packageName";
- private static final String PROJECT = "project";
- private static final String QUALIFIER = "qualifier";
- private static final String REVISION = "revision";
- private static final String VERSION = "version";
- private File classFile_;
- private String className_ = "GeneratedVersion";
- private File directory_;
- private String extension_ = ".java";
- private String packageName_;
- private String projectName_;
- private BaseProject project_;
- private File template_;
-
- /**
- * Builds the template based on the {@link GeneratedVersion} data.
- *
- * @return the template
- */
- public Template buildTemplate() {
- Template template;
- var version = project_.version();
- TemplateFactory.TXT.resetClassLoader();
- if (template_ == null) {
- var group = new ResourceFinderGroup().add(ResourceFinderClasspath.instance());
- template = TemplateFactory.TXT.setResourceFinder(group).get("default_generated_version");
- } else {
- File parent;
- if (template_.getParentFile() != null) {
- parent = template_.getParentFile();
- } else {
- parent = new File(template_.getAbsolutePath()).getParentFile();
- }
- var group = new ResourceFinderGroup().add(new ResourceFinderDirectories(parent));
- template = TemplateFactory.TXT.setResourceFinder(group).get(template_.getName());
- }
-
- if (packageName_ == null) {
- packageName_ = project_.pkg();
- }
-
- if (template.hasValueId(PACKAGE_NAME)) {
- template.setValue(PACKAGE_NAME, packageName_);
- }
-
- if (template.hasValueId(CLASSNAME)) {
- template.setValue(CLASSNAME, className_);
- }
-
- if (template.hasValueId(PROJECT)) {
- if (projectName_ == null) {
- projectName_ = project_.name();
- }
- template.setValue(PROJECT, projectName_);
- }
-
- if (template.hasValueId(EPOCH)) {
- template.setValue(EPOCH, System.currentTimeMillis());
- }
-
- if (template.hasValueId(VERSION)) {
- template.setValue(VERSION, version.toString());
- }
-
- if (template.hasValueId(MAJOR)) {
- template.setValue(MAJOR, version.majorInt());
- }
-
- if (template.hasValueId(MINOR)) {
- template.setValue(MINOR, version.minorInt());
- }
-
- if (template.hasValueId(REVISION)) {
- template.setValue(REVISION, version.revisionInt());
- }
-
- if (template.hasValueId(QUALIFIER)) {
- template.setValue(QUALIFIER, version.qualifier());
- }
-
- return template;
- }
+ private File classFile;
+ private String className;
+ private File directory;
+ private String extension = ".java";
+ private String packageName;
+ private BaseProject project;
+ private String projectName;
+ private File template;
/**
* Returns the class file.
@@ -128,7 +43,7 @@ public class GeneratedVersion {
* @return the class file
*/
public File getClassFile() {
- return classFile_;
+ return classFile;
}
/**
@@ -137,7 +52,7 @@ public class GeneratedVersion {
* @return the class name
*/
public String getClassName() {
- return className_;
+ return className;
}
/**
@@ -146,7 +61,7 @@ public class GeneratedVersion {
* @return the destination directory
*/
public File getDirectory() {
- return directory_;
+ return directory;
}
/**
@@ -155,7 +70,7 @@ public class GeneratedVersion {
* @return the file extension
*/
public String getExtension() {
- return extension_;
+ return extension;
}
/**
@@ -164,7 +79,7 @@ public class GeneratedVersion {
* @return the package name
*/
public String getPackageName() {
- return packageName_;
+ return packageName;
}
/**
@@ -173,7 +88,7 @@ public class GeneratedVersion {
* @return the project
*/
public BaseProject getProject() {
- return project_;
+ return project;
}
/**
@@ -182,7 +97,7 @@ public class GeneratedVersion {
* @return the project name
*/
public String getProjectName() {
- return projectName_;
+ return projectName;
}
/**
@@ -191,7 +106,16 @@ public class GeneratedVersion {
* @return the template
*/
public File getTemplate() {
- return template_;
+ return template;
+ }
+
+ /**
+ * Sets the class file.
+ *
+ * @param classFile the class file
+ */
+ public void setClassFile(File classFile) {
+ this.classFile = classFile;
}
/**
@@ -200,7 +124,7 @@ public class GeneratedVersion {
* @param className the class name
*/
public void setClassName(String className) {
- this.className_ = className;
+ this.className = className;
}
/**
@@ -209,7 +133,7 @@ public class GeneratedVersion {
* @param directory the destination directory
*/
public void setDirectory(File directory) {
- this.directory_ = directory;
+ this.directory = directory;
}
/**
@@ -218,7 +142,7 @@ public class GeneratedVersion {
* @param extension the file extension
*/
public void setExtension(String extension) {
- this.extension_ = extension;
+ this.extension = extension;
}
/**
@@ -227,7 +151,7 @@ public class GeneratedVersion {
* @param packageName the package name
*/
public void setPackageName(String packageName) {
- this.packageName_ = packageName;
+ this.packageName = packageName;
}
/**
@@ -236,7 +160,7 @@ public class GeneratedVersion {
* @param project the project
*/
public void setProject(BaseProject project) {
- this.project_ = project;
+ this.project = project;
}
/**
@@ -245,7 +169,7 @@ public class GeneratedVersion {
* @param projectName the project name
*/
public void setProjectName(String projectName) {
- this.projectName_ = projectName;
+ this.projectName = projectName;
}
/**
@@ -254,31 +178,6 @@ public class GeneratedVersion {
* @param template the template
*/
public void setTemplate(File template) {
- this.template_ = template;
- }
-
- /**
- * Writes the project version class in the given directory.
- */
- public void writeTemplate(Template template) throws IOException {
- if (packageName_ != null) {
- classFile_ = Path.of(directory_.getAbsolutePath(), packageName_.replace(".", File.separator),
- className_ + extension_).toFile();
- } else {
- classFile_ = new File(directory_, className_ + ".java");
- }
-
- if (!classFile_.getParentFile().exists()) {
- var dirs = classFile_.getParentFile().mkdirs();
- if (!dirs && !classFile_.getParentFile().exists()) {
- throw new IOException("Could not create project package directories: " + classFile_.getParent());
- }
- }
-
- try {
- FileUtils.writeString(template.getContent(), classFile_);
- } catch (IOException e) {
- throw new IOException("Unable to write the version class file: " + e.getMessage(), e);
- }
+ this.template = template;
}
}
diff --git a/src/main/java/rife/bld/extension/GeneratedVersionOperation.java b/src/main/java/rife/bld/extension/GeneratedVersionOperation.java
index 6a5e065..484ccf0 100644
--- a/src/main/java/rife/bld/extension/GeneratedVersionOperation.java
+++ b/src/main/java/rife/bld/extension/GeneratedVersionOperation.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2025 the original author or authors.
+ * Copyright 2023-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,10 +19,16 @@ package rife.bld.extension;
import rife.bld.BaseProject;
import rife.bld.operations.AbstractOperation;
-import rife.bld.operations.exceptions.ExitStatusException;
+import rife.resources.ResourceFinderDirectories;
+import rife.template.Template;
+import rife.template.TemplateConfig;
+import rife.template.TemplateFactory;
+import rife.tools.FileUtils;
import java.io.File;
+import java.io.IOException;
import java.nio.file.Path;
+import java.util.Objects;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -33,8 +39,119 @@ import java.util.logging.Logger;
* @since 1.0
*/
public class GeneratedVersionOperation extends AbstractOperation {
+ private static final String CLASSNAME = "className";
+ private static final String EPOCH = "epoch";
private static final Logger LOGGER = Logger.getLogger(GeneratedVersionOperation.class.getName());
- private final GeneratedVersion generatedVersion_ = new GeneratedVersion();
+ private static final String MAJOR = "major";
+ private static final String MINOR = "minor";
+ private static final String PACKAGE_NAME = "packageName";
+ private static final String PROJECT = "project";
+ private static final String QUALIFIER = "qualifier";
+ private static final String REVISION = "revision";
+ private static final String VERSION = "version";
+ private final GeneratedVersion generatedVersion = new GeneratedVersion();
+
+ /**
+ * Builds the template based on the {@link GeneratedVersion} data.
+ *
+ * @param gv the generated version
+ * @return the template
+ */
+ public static Template buildTemplate(GeneratedVersion gv) {
+ Template template;
+ var version = gv.getProject().version();
+ if (gv.getTemplate() == null) {
+ template = TemplateFactory.TXT.get("version.txt");
+ } else {
+ var files = new ResourceFinderDirectories(gv.getTemplate().getParentFile());
+ template = new TemplateFactory(TemplateConfig.TXT, "txtFiles", TemplateFactory.TXT)
+ .setResourceFinder(files).get(gv.getTemplate().getName());
+ }
+
+ if (gv.getPackageName() == null) {
+ gv.setPackageName(gv.getProject().pkg());
+ }
+
+ if (template.hasValueId(PACKAGE_NAME)) {
+ template.setValue(PACKAGE_NAME, gv.getPackageName());
+ }
+
+ gv.setClassName(Objects.requireNonNullElse(gv.getClassName(), "GeneratedVersion"));
+ if (template.hasValueId(CLASSNAME)) {
+ template.setValue(CLASSNAME, gv.getClassName());
+ }
+
+ if (template.hasValueId(PROJECT)) {
+ if (gv.getProjectName() == null) {
+ gv.setProjectName(gv.getProject().name());
+ }
+ template.setValue(PROJECT, gv.getProjectName());
+ }
+
+ if (template.hasValueId(EPOCH)) {
+ template.setValue(EPOCH, System.currentTimeMillis());
+ }
+
+ if (template.hasValueId(VERSION)) {
+ template.setValue(VERSION, version.toString());
+ }
+
+ if (template.hasValueId(MAJOR)) {
+ template.setValue(MAJOR, version.majorInt());
+ }
+
+ if (template.hasValueId(MINOR)) {
+ template.setValue(MINOR, version.minorInt());
+ }
+
+ if (template.hasValueId(REVISION)) {
+ template.setValue(REVISION, version.revisionInt());
+ }
+
+ if (template.hasValueId(QUALIFIER)) {
+ template.setValue(QUALIFIER, version.qualifier());
+ }
+
+ return template;
+ }
+
+ /**
+ * Writes the project version class in the given directory.
+ *
+ * @param template the template
+ * @param gv the generated version
+ */
+ public static void writeTemplate(Template template, GeneratedVersion gv) {
+ if (gv.getPackageName() != null) {
+ gv.setClassFile(Path.of(gv.getDirectory().getAbsolutePath(),
+ gv.getPackageName().replace(".", File.separator), gv.getClassName()
+ + gv.getExtension()).toFile());
+ } else {
+ gv.setClassFile(Path.of(gv.getDirectory().getAbsolutePath(), gv.getClassName() + ".java").toFile());
+ }
+
+ if (!gv.getClassFile().getParentFile().exists()) {
+ var mkdirs = gv.getClassFile().getParentFile().mkdirs();
+ if (!mkdirs && !gv.getClassFile().getParentFile().exists() && LOGGER.isLoggable(Level.SEVERE)) {
+ LOGGER.log(Level.SEVERE, "Could not create project package directories: {0}",
+ gv.getClassFile().getParent());
+ }
+ }
+
+ try {
+ var updated = gv.getClassFile().exists();
+ FileUtils.writeString(template.getContent(), gv.getClassFile());
+ if (LOGGER.isLoggable(Level.INFO)) {
+ LOGGER.log(Level.INFO, "Generated version ({0}) class has been {1}: {2}",
+ new String[]{gv.getProject().version().toString(), updated ? "updated" : "created",
+ "file://" + gv.getClassFile().toURI().getPath()});
+ }
+ } catch (IOException e) {
+ if (LOGGER.isLoggable(Level.SEVERE)) {
+ LOGGER.log(Level.SEVERE, "Unable to write the version class file.", e);
+ }
+ }
+ }
/**
* Sets the class name.
@@ -43,7 +160,7 @@ public class GeneratedVersionOperation extends AbstractOperation