Skip to content

Commit

Permalink
Update README and CHANGELOG. Prepare for next release.
Browse files Browse the repository at this point in the history
  • Loading branch information
baron1405 committed Jun 29, 2024
1 parent ecaf886 commit f8d7da5
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 12 deletions.
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [unreleased]

## [4.5.0] - 2024-06-29

### Added

- New `JavaVersion` and `JavaVersionScheme` classes to represent and interact with Java language
Expand Down Expand Up @@ -103,7 +105,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

- Parsing versions of various formats using the `Version` class.

[unreleased]: https://github.com/cthing/versionparser/compare/4.4.0...HEAD
[unreleased]: https://github.com/cthing/versionparser/compare/4.5.0...HEAD
[4.5.0]: https://github.com/cthing/versionparser/releases/tag/4.5.0
[4.4.0]: https://github.com/cthing/versionparser/releases/tag/4.4.0
[4.3.0]: https://github.com/cthing/versionparser/releases/tag/4.3.0
[4.2.1]: https://github.com/cthing/versionparser/releases/tag/4.2.1
Expand Down
60 changes: 50 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ The following version and version constraint schemes are supported:

* [Maven](https://maven.apache.org/)
* [Gradle](https://gradle.org/)
* [Java](https://www.java.com/releases/)
* [NPM](https://www.npmjs.com/)
* [RubyGems](https://rubygems.org/)
* [Semantic Versioning](https://semver.org/)
Expand All @@ -26,24 +27,25 @@ following Maven dependency:
<dependency>
<groupId>org.cthing</groupId>
<artifactId>versionparser</artifactId>
<version>4.4.0</version>
<version>4.5.0</version>
</dependency>
```
or the following Gradle dependency:
```kotlin
implementation("org.cthing:versionparser:4.4.0")
implementation("org.cthing:versionparser:4.5.0")
```

### Versioning Overview

| Scheme | Version Factory | Version Constraint Factory |
|----------|----------------------------------------------------|-----------------------------------------------|
| Maven | `MvnVersionScheme.parseVersion(String)` | `MvnVersionScheme.parseConstraint(String)` |
| Gradle | `GradleVersionScheme.parseVersion(String)` | `GradleVersionScheme.parseConstraint(String)` |
| Npm | `NpmVersionScheme.parseVersion(String)` | `NpmVersionScheme.parseConstraint(String)` |
| RubyGems | `GemVersionScheme.parseVersion(String)` | `GemVersionScheme.parseConstraint(String)` |
| Semantic | `SemanticVersion.parseVersion(String)` | N/A |
| Calendar | `CalendarVersionScheme.parse(String)`<sup>1</sup> | N/A |
| Scheme | Version Factory | Version Constraint Factory |
|----------|---------------------------------------------------|-----------------------------------------------|
| Calendar | `CalendarVersionScheme.parse(String)`<sup>1</sup> | N/A |
| Gradle | `GradleVersionScheme.parseVersion(String)` | `GradleVersionScheme.parseConstraint(String)` |
| Java | `JavaVersionScheme.parseVersion(String)` | `JavaVersionScheme.parseRange(String)` |
| Maven | `MvnVersionScheme.parseVersion(String)` | `MvnVersionScheme.parseConstraint(String)` |
| Npm | `NpmVersionScheme.parseVersion(String)` | `NpmVersionScheme.parseConstraint(String)` |
| RubyGems | `GemVersionScheme.parseVersion(String)` | `GemVersionScheme.parseConstraint(String)` |
| Semantic | `SemanticVersion.parseVersion(String)` | N/A |

<sup>1</sup> A `CalendarVersionScheme` instance must be created to define the version format. Call the `parse` method
on that instance to create a version instance.
Expand Down Expand Up @@ -112,6 +114,44 @@ assertThat(constraint1.intersect(constraint2)).isEqualTo(GradleVersionScheme.par
assertThat(constraint1.union(constraint2)).isEqualTo(GradleVersionScheme.parseConstraint("[1.0.0,2.0.0)"));
```

### Java Versioning
Support is provided for parsing versions of the Java programming language and creating constraints based
on those versions. During its long history, Java has used different versioning schemes (e.g. 1.4.2_151, 17.0.12+34).

```java
// Parse versions
final JavaVersion version1 = JavaVersionScheme.parseVersion("17.0.11+9");
final Version version2 = GradleVersionScheme.parseVersion("1.4.2_151");

// Obtain information from the parsed version
assertThat(version1.getOriginalVersion()).isEqualTo("17.0.11+9");
assertThat(version1.isPreRelease()).isFalse();
assertThat(version1.getFeature()).isEqualTo(17);
assertThat(version1.getInterim()).isEqualTo(0);
assertThat(version1.getUpdate()).isEqualTo(11);
assertThat(version1.getBuild()).contains(9);

// Verify ordering
assertThat(version1.compareTo(version2)).isEqualTo(1);

// Parse version constraints
final VersionConstraint constraint1 = GradleVersionScheme.parseConstraint("[11,21)");
final VersionConstraint constraint2 = GradleVersionScheme.parseConstraint("[1.5,1.7]");

// Perform constraint checking
assertThat(constraint1.allows(version1)).isTrue();
assertThat(constraint1.allows(version2)).isFalse();

// Perform constraint set operations
assertThat(constraint1.union(constraint2)).isEqualTo(GradleVersionScheme.parseConstraint("[1.5,1.7],[11,21)"));

// Test current runtime Java version
assertThat(JavaVersionScheme.isVersion(JavaVersionScheme.JAVA_17, JavaVersion.RUNTIME_VERSION)).isTrue();

// Test a Java version is greater than or equal to Java 17
assertThat(JavaVersionScheme.isVersion(JavaVersionScheme.JAVA_17_PLUS, "21")).isTrue();
```

### NPM Versioning
Support is provided for parsing semantic versions and NPM dependency version constraints.

Expand Down
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ plugins {
alias(libs.plugins.versions)
}

version = ProjectVersion("4.5.0", BuildType.release)
version = ProjectVersion("4.5.1", BuildType.snapshot)
group = "org.cthing"
description = "Parses version numbers, ranges and constraints in a variety of formats."

Expand Down

0 comments on commit f8d7da5

Please sign in to comment.