Skip to content

Commit c83e6a2

Browse files
committed
Add support for Debian package versions.
1 parent 4c8c4e1 commit c83e6a2

10 files changed

Lines changed: 895 additions & 3 deletions

File tree

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ plugins {
3232
alias(libs.plugins.versions)
3333
}
3434

35-
version = ProjectVersion("5.0.1", BuildType.snapshot)
35+
version = ProjectVersion("5.1.0", BuildType.snapshot)
3636
group = "org.cthing"
3737
description = "Parses version numbers, ranges and constraints in a variety of formats."
3838

dev/spotbugs/suppressions.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
</Match>
3030
<Match>
3131
<Bug pattern="STT_STRING_PARSING_A_FIELD"/>
32-
<Class name="~.*MvnVersion\$Tokenizer"/>
32+
<Class name="~.*(MvnVersion\$Tokenizer|DebVersion)"/>
3333
</Match>
3434
<Match>
3535
<Bug pattern="STT_TOSTRING_STORED_IN_FIELD"/>

examples/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ tasks {
3232
}
3333

3434
listOf("CalVerExample",
35+
"DebianExample",
3536
"GradleExample",
3637
"JavaVersionExample",
3738
"MavenExample",
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*
2+
* Copyright 2026 C Thing Software
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
package org.cthing.versionparser.examples;
6+
7+
import org.cthing.versionparser.Version;
8+
import org.cthing.versionparser.VersionConstraint;
9+
import org.cthing.versionparser.VersionParsingException;
10+
import org.cthing.versionparser.debian.DebVersion;
11+
import org.cthing.versionparser.debian.DebVersionScheme;
12+
13+
import static org.assertj.core.api.Assertions.assertThat;
14+
15+
16+
/**
17+
* Parse Debian package versions and version constraints.
18+
*/
19+
public final class DebianExample {
20+
21+
private DebianExample() {
22+
}
23+
24+
/**
25+
* Performs operations on Debian package versions and version constraints.
26+
*
27+
* @param args Not used
28+
* @throws VersionParsingException if there was a problem parsing.
29+
*/
30+
public static void main(final String[] args) throws VersionParsingException {
31+
// Parse versions
32+
final DebVersion version1 = DebVersionScheme.parseVersion("22.07.5-2ubuntu1.5");
33+
final Version version2 = DebVersionScheme.parseVersion("20.01.2-1ubuntu1.5");
34+
35+
// Obtain information from the parsed version
36+
assertThat(version1.getOriginalVersion()).isEqualTo("22.07.5-2ubuntu1.5");
37+
assertThat(version1.isPreRelease()).isFalse();
38+
assertThat(version1.getEpoch()).isEqualTo(0);
39+
assertThat(version1.getUpstream()).isEqualTo("22.07.5");
40+
assertThat(version1.getRevision()).isEqualTo("2ubuntu1.5");
41+
42+
// Verify ordering
43+
assertThat(version1.compareTo(version2)).isEqualTo(1);
44+
45+
// Parse version constraints
46+
final VersionConstraint constraint1 = DebVersionScheme.parseConstraint(">20");
47+
final VersionConstraint constraint2 = DebVersionScheme.parseConstraint(">21 <=23");
48+
49+
// Perform constraint checking
50+
assertThat(constraint1.allows(version2)).isTrue();
51+
assertThat(constraint2.allows(version1)).isTrue();
52+
assertThat(constraint2.allows(version2)).isFalse();
53+
}
54+
}

0 commit comments

Comments
 (0)