Skip to content

Commit

Permalink
Updated readme
Browse files Browse the repository at this point in the history
  • Loading branch information
ethauvin committed Apr 3, 2023
1 parent 26f0709 commit 318f436
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 26 deletions.
6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

67 changes: 43 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
[![License (3-Clause BSD)](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg?style=flat-square)](http://opensource.org/licenses/BSD-3-Clause)
[![GitHub CI](https://github.com/rife2/bld-property-file/actions/workflows/bld.yml/badge.svg)](https://github.com/rife2/bld-property-file/actions/workflows/bld.yml)


An extension for creating or modifying [property files](https://docs.oracle.com/javase/tutorial/essential/environment/properties.html) with [bld](https://github.com/rife2/rife2/wiki/What-Is-Bld). It is inspired by the [ant PropertyFile task](https://ant.apache.org/manual/Tasks/propertyfile.html).

```java
Expand All @@ -17,35 +16,55 @@ public void updateMajor() throws Exception {
.execute();
}

```
Assuming the following `version.properties` file:

```ini
# version.properties
version.major=1
version.minor=0
version.patch=1
```

To invoke the `updateMajor` command:
Invoking the `updateMajor` command:

```sh
./bld updateMajor
./bld updateMajor ...
```

## PropertyFileOperation
would update the properties to:

```ini
# version.properties
version.major=2
version.minor=0
version.patch=0
```
- [View Examples](https://github.com/rife2/bld-property-file/tree/master/examples)

## Property File

The `PropertyFileOperation` class is used to configure the [properties file](https://docs.oracle.com/javase/tutorial/essential/environment/properties.html) location, etc.

Attribute | Description | Required
:---------------|:----------------------------------------------------------|:--------
`file` | The location of the properties files to modify. | Yes
`comment` | Comment to be inserted at the top of the properties file. | No
`failOnWarning` | If set to `true`, will fail on any warnings. | No
Attribute | Description | Required
:---------------|:-----------------------------------------------------------------|:--------
`file` | The location of the properties files to modify. | Yes
`comment` | Comment to be inserted at the top of the properties file. | No
`failOnWarning` | If set to `true`, will cause executiion to fail on any warnings. | No

## Entry

The `entry` function is used to specify edits to be made to the properties file.
The `Entry` class is used to specify modifications to be made to the [properties file](https://docs.oracle.com/javase/tutorial/essential/environment/properties.html).

Attribute | Description
:-----------|:-----------------------------------------------------------------------------------------------------------------
`key` | The name of the property name/value pair.
`value` | The value of the property.
`default` | The initial value to set for the property if not already defined. For `Type.DATE`, the `now` keyword can be used.
`type` | Tread the value as `Types.INT`, `Types.DATE`, or `Types.STRING`. If none specified, `Types.STRING` is assumed.
`operation` | See [operations](#operations).
`pattern` | For `Types.INT` and `Types.DATE` only. If present, will parse the value as [DecimalFormat](https://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html) or [SimpleDateFormat](https://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) patterns, respectively.
`unit` | The unit value to be applied to `Operations.ADD` and `Operations.SUBTRACT` for `Types.DATE`. See [Units](#units).
Attribute | Description
:--------------|:-----------------------------------------------------------------------------------------------------------------
`key` | The name of the property name/value pair.
`value` | The value of the property.
`defaultVlaue` | The initial value to set for the property if not already defined. For `Type.DATE`, the `now` keyword can be used.
`type` | Tread the value as `Types.INT`, `Types.DATE`, or `Types.STRING`. If none specified, `Types.STRING` is assumed.
`operation` | See [operations](#operations).
`pattern` | For `Types.INT` and `Types.DATE` only. If present, will parse the value as [DecimalFormat](https://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html) or [SimpleDateFormat](https://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) patterns, respectively.
`unit` | The unit value to be applied to `Operations.ADD` and `Operations.SUBTRACT` for `Types.DATE`. See [Units](#units).

`key` is required. `value` or `default` are required unless the `operation` is `Operations.DELETE`.

Expand Down Expand Up @@ -78,15 +97,15 @@ The following units are available for `Types.DATE` with `Operations.ADD` and `Op
The rules used when setting a property value are:

* If only `value` is specified, the property is set to it regardless of its previous value.
* If only `default` is specified and the property previously existed, it is unchanged.
* If only `default` is specified and the property did not exist, the property is set to `default`.
* If `value` and `default` are both specified and the property previously existed, the property is set to `value`.
* If `value` and `default` are both specified and the property did not exist, the property is set to `default`.
* If only `defaultValue` is specified and the property previously existed, it is unchanged.
* If only `defaultValue` is specified and the property did not exist, the property is set to `defaultValue`.
* If `value` and `defaultValue` are both specified and the property previously existed, the property is set to `value`.
* If `value` and `defaultValue` are both specified and the property did not exist, the property is set to `defaultValue`.

Operations occur after the rules are evaluated.

## Differences with the [ant PropertyFile task](https://ant.apache.org/manual/Tasks/propertyfile.html)

* The comments and layout of the original property file will not be preserved.
* The `jdkproperties` parameter is not implemented.
* The default `Entry.Types.DATE` pattern is `yyyy-MM-dd HH:mm` and not `yyyy/MM/dd HH:mm`.
* The default `Types.DATE` pattern is `yyyy-MM-dd HH:mm` and not `yyyy/MM/dd HH:mm`.
4 changes: 2 additions & 2 deletions examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

## Compile

First make sure the project is compiled, by issuing the following command:
First make sure the project up-to-date and compiled:

```shell
./bld compile
./bld download compile
```
## Run

Expand Down

0 comments on commit 318f436

Please sign in to comment.