Compare commits

..

No commits in common. "b8cd4925a322f95dbe8f5b3b330b1cb8e69aa366" and "2b5f29a0160f9d4508356d4d9ffdd5e768b68702" have entirely different histories.

14 changed files with 80 additions and 161 deletions

View file

@ -3,17 +3,3 @@
```console
./bld compile run
```
# Update Version Properties
```console
./bld update-major run
./bld update-minor run
./bld update-patch run
```
# Delete Version Properties
```console
./bld delete-version run
```

Binary file not shown.

View file

@ -1,6 +1,6 @@
#Sun Apr 02 10:32:44 PDT 2023
bld.extension=com.uwyn.rife2:bld-property-file:0.9.5
bld.repositories=MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
bld.downloadExtensionSources=true
bld.downloadLocation=
bld.extension=com.uwyn.rife2:bld-property-file:0.9.6-SNAPSHOT
bld.repositories=MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
bld.version=1.9.1

View file

@ -50,7 +50,7 @@ public class PropertyFileExampleBuild extends Project {
new PropertyFileExampleBuild().start(args);
}
@BuildCommand(value = "update-major", summary = "Updates major version")
@BuildCommand(summary = "Updates major version")
public void updateMajor() throws Exception {
new PropertyFileOperation()
.fromProject(this)
@ -66,7 +66,7 @@ public class PropertyFileExampleBuild extends Project {
.execute();
}
@BuildCommand(value = "update-minor", summary = "Updates minor version")
@BuildCommand(summary = "Updates minor version")
public void updateMinor() throws Exception {
new PropertyFileOperation()
.fromProject(this)
@ -82,7 +82,7 @@ public class PropertyFileExampleBuild extends Project {
.execute();
}
@BuildCommand(value = "update-patch", summary = "Updates patch version")
@BuildCommand(summary = "Updates patch version")
public void updatePatch() throws Exception {
new PropertyFileOperation()
.fromProject(this)
@ -98,7 +98,7 @@ public class PropertyFileExampleBuild extends Project {
.execute();
}
@BuildCommand(value = "update-release", summary = "Updates the release")
@BuildCommand(summary = "Updates the release")
public void updateRelease() throws Exception {
new PropertyFileOperation()
.fromProject(this)
@ -110,7 +110,7 @@ public class PropertyFileExampleBuild extends Project {
.execute();
}
@BuildCommand(value = "delete-version", summary = "Delete version properties")
@BuildCommand(summary = "Delete version properties")
public void deleteVersion() throws Exception {
new PropertyFileOperation()
.fromProject(this)

Binary file not shown.

View file

@ -1,7 +1,7 @@
bld.downloadExtensionJavadoc=false
bld.downloadExtensionSources=true
bld.downloadLocation=
bld.extension-pmd=com.uwyn.rife2:bld-pmd:0.9.9
bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.5
bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.0
bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
bld.downloadLocation=
bld.version=1.9.1

View file

@ -53,7 +53,7 @@ public class Entry extends EntryBase {
* @return the entry
*/
public Entry delete() {
setDelete();
setDelete(true);
return this;
}

View file

@ -28,15 +28,15 @@ import java.util.function.IntFunction;
*/
@SuppressWarnings("PMD.DataClass")
public class EntryBase {
private IntFunction<Integer> calc_;
private Object defaultValue_;
private boolean isDelete_;
private String key_;
private String modifyValue_ = "";
private BiFunction<String, String, String> modify_;
private Object newValue_;
private String pattern_ = "";
private EntryDate.Units unit_ = EntryDate.Units.DAY;
private IntFunction<Integer> calc;
private Object defaultValue;
private boolean isDelete;
private String key;
private BiFunction<String, String, String> modify;
private String modifyValue = "";
private Object newValue;
private String pattern = "";
private EntryDate.Units unit = EntryDate.Units.DAY;
/**
* Creates a new {@link EntryBase entry}.
@ -44,7 +44,7 @@ public class EntryBase {
* @param key the required property key
*/
public EntryBase(String key) {
key_ = key;
this.key = key;
}
/**
@ -53,7 +53,7 @@ public class EntryBase {
* @return the calc function
*/
protected IntFunction<Integer> getCalc() {
return calc_;
return calc;
}
/**
@ -62,7 +62,7 @@ public class EntryBase {
* @return the default value
*/
protected Object getDefaultValue() {
return defaultValue_;
return defaultValue;
}
/**
@ -71,7 +71,7 @@ public class EntryBase {
* @return the key
*/
protected String getKey() {
return key_;
return key;
}
/**
@ -80,16 +80,16 @@ public class EntryBase {
* @return the modify function
*/
protected BiFunction<String, String, String> getModify() {
return modify_;
return modify;
}
/**
* Returns the value to be used in the {@link #modify_} function.
* Returns the value to be used in the {@link #modify} function.
*
* @return the modify value
*/
protected String getModifyValue() {
return modifyValue_;
return modifyValue;
}
/**
@ -98,7 +98,7 @@ public class EntryBase {
* @return the new value
*/
public Object getNewValue() {
return newValue_;
return newValue;
}
/**
@ -107,7 +107,7 @@ public class EntryBase {
* @return the pattern
*/
protected String getPattern() {
return pattern_;
return pattern;
}
/**
@ -116,7 +116,7 @@ public class EntryBase {
* @return the unit
*/
protected EntryDate.Units getUnit() {
return unit_;
return unit;
}
/**
@ -125,7 +125,7 @@ public class EntryBase {
* @return {@code true} or {@code false}
*/
protected boolean isDelete() {
return isDelete_;
return isDelete;
}
/**
@ -136,7 +136,7 @@ public class EntryBase {
*/
@SuppressWarnings("unused")
public EntryBase key(String key) {
key_ = key;
setKey(key);
return this;
}
@ -146,7 +146,7 @@ public class EntryBase {
* @param calc the calc function
*/
protected void setCalc(IntFunction<Integer> calc) {
calc_ = calc;
this.calc = calc;
}
/**
@ -155,14 +155,16 @@ public class EntryBase {
* @param defaultValue the default value
*/
protected void setDefaultValue(Object defaultValue) {
defaultValue_ = defaultValue;
this.defaultValue = defaultValue;
}
/**
* Sets the {@link java.util.Properties property} to be deleted.
* Sets whether the {@link java.util.Properties property} should be deleted.
*
* @param delete {@code true} or {@code false}
*/
protected void setDelete() {
isDelete_ = true;
protected void setDelete(boolean delete) {
isDelete = delete;
}
/**
@ -171,7 +173,7 @@ public class EntryBase {
* @param key the {@link java.util.Properties property} key
*/
protected void setKey(String key) {
key_ = key;
this.key = key;
}
/**
@ -180,7 +182,7 @@ public class EntryBase {
* @param modify the modify function
*/
protected void setModify(BiFunction<String, String, String> modify) {
modify_ = modify;
this.modify = modify;
}
/**
@ -190,8 +192,8 @@ public class EntryBase {
* @param modify the modify function
*/
protected void setModify(String value, BiFunction<String, String, String> modify) {
modifyValue_ = value;
modify_ = modify;
this.modifyValue = value;
this.modify = modify;
}
/**
@ -200,7 +202,7 @@ public class EntryBase {
* @param value the modify value.
*/
protected void setModifyValue(String value) {
modifyValue_ = value;
this.modifyValue = value;
}
/**
@ -209,7 +211,7 @@ public class EntryBase {
* @param newValue the new value
*/
public void setNewValue(Object newValue) {
newValue_ = newValue;
this.newValue = newValue;
}
/**
@ -219,7 +221,7 @@ public class EntryBase {
* @param pattern the pattern
*/
protected void setPattern(String pattern) {
pattern_ = pattern;
this.pattern = pattern;
}
/**
@ -228,6 +230,6 @@ public class EntryBase {
* @param unit the {@link EntryDate.Units unit}
*/
protected void setUnit(EntryDate.Units unit) {
unit_ = unit;
this.unit = unit;
}
}

View file

@ -54,7 +54,7 @@ public class EntryDate extends EntryBase {
* @return this instance
*/
public EntryDate delete() {
setDelete();
setDelete(true);
return this;
}

View file

@ -63,7 +63,7 @@ public class EntryInt extends EntryBase {
* @return this instance
*/
public EntryInt delete() {
setDelete();
setDelete(true);
return this;
}

View file

@ -31,11 +31,11 @@ import java.util.Properties;
* @since 1.0
*/
public class PropertyFileOperation extends AbstractOperation<PropertyFileOperation> {
private final List<EntryBase> entries_ = new ArrayList<>();
private String comment_ = "";
private boolean failOnWarning_;
private File file_;
private BaseProject project_;
private final List<EntryBase> entries = new ArrayList<>();
private String comment = "";
private boolean failOnWarning;
private File file;
private BaseProject project;
/**
* Sets the comment to be inserted at the top of the {@link java.util.Properties} file.
@ -43,8 +43,9 @@ public class PropertyFileOperation extends AbstractOperation<PropertyFileOperati
* @param comment the header comment
* @return this instance
*/
@SuppressWarnings("unused")
public PropertyFileOperation comment(String comment) {
comment_ = comment;
this.comment = comment;
return this;
}
@ -57,7 +58,7 @@ public class PropertyFileOperation extends AbstractOperation<PropertyFileOperati
*/
@SuppressWarnings("unused")
public PropertyFileOperation entry(EntryBase entry) {
entries_.add(entry);
entries.add(entry);
return this;
}
@ -66,18 +67,18 @@ public class PropertyFileOperation extends AbstractOperation<PropertyFileOperati
*/
@Override
public void execute() throws Exception {
var commandName = project_.getCurrentCommandName();
var commandName = project.getCurrentCommandName();
var properties = new Properties();
var success = false;
if (file_ == null) {
if (file == null) {
PropertyFileUtils.warn(commandName, "A properties file must be specified.");
} else {
success = PropertyFileUtils.loadProperties(commandName, file_, properties);
success = PropertyFileUtils.loadProperties(commandName, file, properties);
}
if (success) {
for (var entry : entries_) {
for (var entry : entries) {
if (entry.getKey().isBlank()) {
PropertyFileUtils.warn(commandName, "An entry key must specified.");
} else {
@ -93,9 +94,9 @@ public class PropertyFileOperation extends AbstractOperation<PropertyFileOperati
PropertyFileUtils.warn(commandName, "An entry must be set or have a default value: " + key);
} else {
if (entry instanceof EntryDate) {
success = PropertyFileUtils.processDate(commandName, properties, (EntryDate) entry, failOnWarning_);
success = PropertyFileUtils.processDate(commandName, properties, (EntryDate) entry, failOnWarning);
} else if (entry instanceof EntryInt) {
success = PropertyFileUtils.processInt(commandName, properties, (EntryInt) entry, failOnWarning_);
success = PropertyFileUtils.processInt(commandName, properties, (EntryInt) entry, failOnWarning);
} else {
success = PropertyFileUtils.processString(properties, (Entry) entry);
}
@ -105,7 +106,7 @@ public class PropertyFileOperation extends AbstractOperation<PropertyFileOperati
}
if (success) {
PropertyFileUtils.saveProperties(file_, comment_, properties);
PropertyFileUtils.saveProperties(file, comment, properties);
}
}
@ -115,8 +116,9 @@ public class PropertyFileOperation extends AbstractOperation<PropertyFileOperati
* @param failOnWarning if set to {@code true}, the execution will fail on any warnings.
* @return this instance
*/
@SuppressWarnings("unused")
public PropertyFileOperation failOnWarning(boolean failOnWarning) {
failOnWarning_ = failOnWarning;
this.failOnWarning = failOnWarning;
return this;
}
@ -126,8 +128,9 @@ public class PropertyFileOperation extends AbstractOperation<PropertyFileOperati
* @param file the file to be edited
* @return this instance
*/
@SuppressWarnings("unused")
public PropertyFileOperation file(File file) {
file_ = file;
this.file = file;
return this;
}
@ -137,8 +140,9 @@ public class PropertyFileOperation extends AbstractOperation<PropertyFileOperati
* @param file the file to be edited
* @return this instance
*/
@SuppressWarnings("unused")
public PropertyFileOperation file(String file) {
file_ = new File(file);
this.file = new File(file);
return this;
}
@ -149,7 +153,7 @@ public class PropertyFileOperation extends AbstractOperation<PropertyFileOperati
* @return this instance
*/
public PropertyFileOperation fromProject(BaseProject project) {
project_ = project;
this.project = project;
return this;
}
}

View file

@ -104,10 +104,12 @@ public final class PropertyFileUtils {
public static boolean processDate(String command, Properties p, EntryDate entry, boolean failOnWarning)
throws Exception {
var success = true;
var value = currentValue(null, entry.getDefaultValue(), entry.getNewValue());
var value = currentValue(null, entry.getDefaultValue(),
entry.getNewValue());
var pattern = entry.getPattern();
var parsedValue = String.valueOf(value);
String parsedValue = String.valueOf(value);
if (pattern != null && !pattern.isBlank()) {
var offset = 0;
@ -237,7 +239,6 @@ public final class PropertyFileUtils {
* @param entry the {@link Entry} containing the {@link Properties property} edits
* @return the boolean
*/
@SuppressWarnings("SameReturnValue")
public static boolean processString(Properties p, Entry entry) {
var value = currentValue(p.getProperty(entry.getKey()), entry.getDefaultValue(), entry.getNewValue());
@ -289,7 +290,6 @@ public final class PropertyFileUtils {
*/
@SuppressWarnings({"PMD.SignatureDeclareThrowsException"})
static void warn(String command, String message, Exception e, boolean failOnWarning) throws Exception {
LOGGER.warning("ahah");
if (failOnWarning) {
LOGGER.log(Level.SEVERE, '[' + command + "] " + message, e);
throw e;

View file

@ -1,79 +0,0 @@
/*
* Copyright 2023-Copyright $today.yearamp;#36;today.year 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.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package rife.bld.extension.propertyfile;
import org.junit.jupiter.api.Test;
import rife.bld.Project;
import java.io.File;
import java.nio.file.Files;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Properties;
import static org.assertj.core.api.Assertions.assertThat;
import static rife.bld.extension.propertyfile.Calc.ADD;
class PropertyFileOperationTest {
@Test
@SuppressWarnings("PMD.AvoidDuplicateLiterals")
void testExecute() throws Exception {
var tmpFile = File.createTempFile("property-file-", "properties");
tmpFile.deleteOnExit();
new PropertyFileOperation()
.fromProject(new Project())
.file(tmpFile)
.comment("This is a comment")
.failOnWarning(true)
.entry(new EntryInt("version.major").defaultValue(0).calc(ADD))
.entry(new EntryInt("version.minor").set(0))
.entry(new EntryInt("version.patch").set(0))
.entry(new EntryDate("build.date").now().pattern("yyyy-MM-dd"))
.execute();
var p = new Properties();
p.load(Files.newInputStream(tmpFile.toPath()));
assertThat(p.getProperty("version.major")).as("major").isEqualTo("1");
assertThat(p.getProperty("version.minor")).as("minor").isEqualTo("0");
assertThat(p.getProperty("version.patch")).as("patch").isEqualTo("0");
assertThat(p.getProperty("build.date")).as("date")
.isEqualTo(LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE));
new PropertyFileOperation()
.fromProject(new Project())
.file(tmpFile.getAbsolutePath())
.entry(new EntryInt("version.major").calc(c -> c + 2))
.execute();
p.load(Files.newInputStream(tmpFile.toPath()));
assertThat(p.getProperty("version.major")).as("major+2").isEqualTo("3");
new PropertyFileOperation()
.fromProject(new Project())
.file(tmpFile)
.entry(new EntryInt("build.date").delete())
.execute();
p.clear();
p.load(Files.newInputStream(tmpFile.toPath()));
assertThat(p.getProperty("build.date")).as("dalete build.date").isNull();
assertThat(p).as("version keys").containsKeys("version.major", "version.minor", "version.patch");
}
}

View file

@ -58,6 +58,7 @@ class PropertyFileUtilsTest {
}
@Test
@SuppressWarnings("PMD.SignatureDeclareThrowsException")
void parseDateSub() throws Exception {
var entryDate = newEntryDate();
entryDate.setCalc(SUB);
@ -83,6 +84,7 @@ class PropertyFileUtilsTest {
}
@Test
@SuppressWarnings("PMD.SignatureDeclareThrowsException")
void parseIntSubTest() throws Exception {
var entryInt = newEntryInt();
entryInt.calc(SUB);
@ -146,6 +148,7 @@ class PropertyFileUtilsTest {
}
@Test
@SuppressWarnings("PMD.SignatureDeclareThrowsException")
void parseTimeTest() throws Exception {
var entry = new EntryDate("time").pattern("m");
var time = LocalTime.now();
@ -162,6 +165,7 @@ class PropertyFileUtilsTest {
}
@Test
@SuppressWarnings("PMD.SignatureDeclareThrowsException")
void processDateAddTest() throws Exception {
var entryDate = newEntryDate();
entryDate.setCalc(ADD);
@ -185,6 +189,7 @@ class PropertyFileUtilsTest {
}
@Test
@SuppressWarnings("PMD.SignatureDeclareThrowsException")
void processIntAddTest() throws Exception {
var entryInt = newEntryInt();
entryInt.calc(ADD);
@ -228,6 +233,7 @@ class PropertyFileUtilsTest {
}
@Test
@SuppressWarnings("PMD.SignatureDeclareThrowsException")
void savePropertiesTest() throws Exception {
var p = new Properties();
var test = "test";