Skip to content

Commit

Permalink
Change Version to GradleVersion and follow version ordering
Browse files Browse the repository at this point in the history
  • Loading branch information
JavierSegoviaCordoba committed Mar 15, 2023
1 parent c4b5b17 commit a2e0b2e
Show file tree
Hide file tree
Showing 24 changed files with 1,460 additions and 405 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@

### Added

- follow Gradle version ordering

### Changed

- `Version` to `GradleVersion`

### Deprecated

### Removed
Expand Down
24 changes: 20 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,11 @@ They can be set via CLI, for example:

Default values:

| | stage | scope | tagPrefix |
|-------------------|--------|--------|-------------|
| **default value** | `auto` | `auto` | ` ` (empty) |
| **Optional** | Yes* | Yes* | Yes* |
| | **default value** | **Optional** |
|-----------|-------------------|--------------|
| stage | `auto` | Yes* |
| scope | `auto` | Yes* |
| tagPrefix | `auto` | Yes* |

> Depends on the use case*
Expand Down Expand Up @@ -224,6 +225,21 @@ semver.tagPrefix=v
./gradlew "-Psemver.stage=auto" # v1.0.1
```

The stage order is based on the Gradle official rules, some samples are:

- If both are non-numeric, the parts are compared alphabetically, in a case-sensitive manner:
`1.0.0-ALPHA.1` < `1.0.0-BETA.1` < `1.0.0-alpha.1` < `1.0.0-beta.1`.
- `dev` is considered lower than any non-numeric
part: `1.0.0-dev.1` < `1.0.0-ALPHA.1` < `1.0.0-alpha.1` < `1.0.0-rc.1`.
- The strings `rc`, `snapshot`, `final`, `ga`, `release` and `sp` are considered higher than any
other string part (sorted in this order): `1.0.0-zeta.1` < `1.0.0-rc.1` < `1.0.0-snapshot` <
`1.0.0-ga.1` < `1.0.0-release.1` < `1.0.0-sp.1` < `1.0.0`.
- These particular values are NOT case-sensitive, as opposed to regular string parts and do not
depend on the separator used around them: `1.0.0-RC.1` == `1.0.0-rc.1`.

Gradle's docs can be
found [here](https://docs.gradle.org/current/userguide/single_versions.html#version_ordering)

### Scopes

To change between scopes, use the Gradle property `-Psemver.scope=<scope>`
Expand Down
3 changes: 3 additions & 0 deletions gradle-version/MODULE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Module gradle-version

Semantic versioning implementation with Gradle version ordering rules
90 changes: 90 additions & 0 deletions gradle-version/api/gradle-version.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
public final class com/javiersc/gradle/version/GradleVersion : java/lang/Comparable {
public static final field Companion Lcom/javiersc/gradle/version/GradleVersion$Companion;
public synthetic fun <init> (Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun compareTo (Lcom/javiersc/gradle/version/GradleVersion;)I
public synthetic fun compareTo (Ljava/lang/Object;)I
public final fun copy (IIILjava/lang/String;Ljava/lang/Integer;)Lcom/javiersc/gradle/version/GradleVersion;
public static synthetic fun copy$default (Lcom/javiersc/gradle/version/GradleVersion;IIILjava/lang/String;Ljava/lang/Integer;ILjava/lang/Object;)Lcom/javiersc/gradle/version/GradleVersion;
public fun equals (Ljava/lang/Object;)Z
public final fun getMajor ()I
public final fun getMinor ()I
public final fun getPatch ()I
public final fun getStage ()Lcom/javiersc/gradle/version/GradleVersion$Stage;
public fun hashCode ()I
public final fun inc (Lcom/javiersc/gradle/version/GradleVersion$Increase;Ljava/lang/String;)Lcom/javiersc/gradle/version/GradleVersion;
public static synthetic fun inc$default (Lcom/javiersc/gradle/version/GradleVersion;Lcom/javiersc/gradle/version/GradleVersion$Increase;Ljava/lang/String;ILjava/lang/Object;)Lcom/javiersc/gradle/version/GradleVersion;
public fun toString ()Ljava/lang/String;
}

public final class com/javiersc/gradle/version/GradleVersion$Companion {
public final fun getRegex ()Lkotlin/text/Regex;
public final fun getScopeRegex ()Lkotlin/text/Regex;
public final fun invoke (IIILjava/lang/String;Ljava/lang/Integer;)Lcom/javiersc/gradle/version/GradleVersion;
public final fun invoke (Ljava/lang/String;)Lcom/javiersc/gradle/version/GradleVersion;
public final fun invoke (Ljava/lang/String;Ljava/lang/String;)Lcom/javiersc/gradle/version/GradleVersion;
public final fun safe-IoAF18A (Ljava/lang/String;)Ljava/lang/Object;
public final fun safe-gIAlu-s (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
public final fun safe-yxL6bBk (IIILjava/lang/String;Ljava/lang/Integer;)Ljava/lang/Object;
}

public abstract interface class com/javiersc/gradle/version/GradleVersion$Increase {
}

public final class com/javiersc/gradle/version/GradleVersion$Increase$Major : com/javiersc/gradle/version/GradleVersion$Increase {
public static final field INSTANCE Lcom/javiersc/gradle/version/GradleVersion$Increase$Major;
}

public final class com/javiersc/gradle/version/GradleVersion$Increase$Minor : com/javiersc/gradle/version/GradleVersion$Increase {
public static final field INSTANCE Lcom/javiersc/gradle/version/GradleVersion$Increase$Minor;
}

public final class com/javiersc/gradle/version/GradleVersion$Increase$Patch : com/javiersc/gradle/version/GradleVersion$Increase {
public static final field INSTANCE Lcom/javiersc/gradle/version/GradleVersion$Increase$Patch;
}

public final class com/javiersc/gradle/version/GradleVersion$Stage : java/lang/Comparable {
public static final field Companion Lcom/javiersc/gradle/version/GradleVersion$Stage$Companion;
public synthetic fun <init> (Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun compareTo (Lcom/javiersc/gradle/version/GradleVersion$Stage;)I
public synthetic fun compareTo (Ljava/lang/Object;)I
public fun equals (Ljava/lang/Object;)Z
public final fun getName ()Ljava/lang/String;
public final fun getNum ()Ljava/lang/Integer;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class com/javiersc/gradle/version/GradleVersion$Stage$Companion {
public final fun getStageRegex ()Lkotlin/text/Regex;
public final fun invoke (Ljava/lang/String;)Lcom/javiersc/gradle/version/GradleVersion$Stage;
public final fun invoke (Ljava/lang/String;Ljava/lang/Integer;)Lcom/javiersc/gradle/version/GradleVersion$Stage;
}

public final class com/javiersc/gradle/version/GradleVersionException : java/lang/Exception {
public fun <init> (Ljava/lang/String;)V
public fun getMessage ()Ljava/lang/String;
}

public final class com/javiersc/gradle/version/IsExtensionsKt {
public static final fun isAlpha (Lcom/javiersc/gradle/version/GradleVersion;)Z
public static final fun isAlpha (Ljava/lang/String;)Z
public static final fun isBeta (Lcom/javiersc/gradle/version/GradleVersion;)Z
public static final fun isBeta (Ljava/lang/String;)Z
public static final fun isDev (Lcom/javiersc/gradle/version/GradleVersion;)Z
public static final fun isDev (Ljava/lang/String;)Z
public static final fun isNotAlpha (Lcom/javiersc/gradle/version/GradleVersion;)Z
public static final fun isNotAlpha (Ljava/lang/String;)Z
public static final fun isNotBeta (Lcom/javiersc/gradle/version/GradleVersion;)Z
public static final fun isNotBeta (Ljava/lang/String;)Z
public static final fun isNotDev (Lcom/javiersc/gradle/version/GradleVersion;)Z
public static final fun isNotDev (Ljava/lang/String;)Z
public static final fun isNotRC (Lcom/javiersc/gradle/version/GradleVersion;)Z
public static final fun isNotRC (Ljava/lang/String;)Z
public static final fun isNotSnapshot (Lcom/javiersc/gradle/version/GradleVersion;)Z
public static final fun isNotSnapshot (Ljava/lang/String;)Z
public static final fun isRC (Lcom/javiersc/gradle/version/GradleVersion;)Z
public static final fun isRC (Ljava/lang/String;)Z
public static final fun isSnapshot (Lcom/javiersc/gradle/version/GradleVersion;)Z
public static final fun isSnapshot (Ljava/lang/String;)Z
}

25 changes: 25 additions & 0 deletions gradle-version/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
hubdle {
config {
analysis()
documentation {
api()
}
explicitApi()
languageSettings {
experimentalCoroutinesApi()
}
publishing()
}
kotlin {
jvm {
features {
coroutines()
}
test {
dependencies {
implementation(kotestProperty())
}
}
}
}
}
Loading

0 comments on commit a2e0b2e

Please sign in to comment.