GitSemVerExtension

open class GitSemVerExtension @JvmOverloads constructor(project: Project, providerFactory: ProviderFactory, objectFactory: ObjectFactory, projectDir: File, logger: Logger, val buildMetadataSeparator: Property<String> = objectFactory.propertyWithDefault("+"), val computeReleaseVersion: Property<Boolean> = objectFactory.propertyWithDefault(false), val developmentCounterLength: Property<Int> = objectFactory.propertyWithDefault(2), val developmentIdentifier: Property<String> = objectFactory.propertyWithDefault("dev"), val distanceCounterRadix: Property<Int> = objectFactory.propertyWithDefault(DEFAULT_RADIX), val enforceSemanticVersioning: Property<Boolean> = objectFactory.propertyWithDefault(true), val forceVersionPropertyName: Property<String> = objectFactory.propertyWithDefault("forceVersion"), val fullHash: Property<Boolean> = objectFactory.propertyWithDefault(false), val includeLightweightTags: Property<Boolean> = objectFactory.propertyWithDefault(true), val maxVersionLength: Property<Int> = objectFactory.propertyWithDefault(Int.MAX_VALUE), val minimumVersion: Property<String> = objectFactory.propertyWithDefault("0.1.0"), val noTagIdentifier: Property<String> = objectFactory.propertyWithDefault("archeo"), val preReleaseSeparator: Property<String> = objectFactory.propertyWithDefault("-"), val versionPrefix: Property<String> = objectFactory.propertyWithDefault(""), updateStrategy: (List<String>) -> UpdateType = { _ -> UpdateType.PATCH })

The plugin extension with the DSL.

Supports the following properties:

  • minimumVersion, defaulting to 0.1.0

  • developmentIdentifier, the identifier for the in-development versions

  • noTagIdentifier, the identifier for early versions of the project, when no tags are available yet

  • fullHash, whether to use the full commit hash as build metadata

  • maxVersionLength, cuts the version to the specified length. Useful for some destinations, e.g., the Gradle Plugin Portal, which limits version numbers to 20 chars.

  • developmentCounterLength, how many digits to use for the counter

  • enforceSemanticVersioning, whether the system should fail or just warn in case a non-SemVer compatible version gets produced

  • computeReleaseVersion, determines whether the version is to be calculated for the release or pre-release (default behavior)

  • preReleaseSeparator, how to separate the pre-release information. Changing this value may generate non-SemVer-compatible versions.

  • buildMetadataSeparator, how to separate the pre-release information. Some destinations (e.g., the Gradle Plugin Portal) do not support the default value '+'. A reasonable alternative is using '-', lifting the build metadata to a pre-release segment.

  • distanceCounterRadix, the radix for the commit counter. Defaults to base 36. Bases from 2 to 36 allowed.

  • versionPrefix, to be used in case tags are prefixed with some symbols before the semantic version (e.g., v1.0.0 is prefixed with "v").

  • includeLightweightTags, to be used in case lightweight tags should be considered.

  • forceVersionPropertyName, the name of the property that, if set, will force the plugin to use the specified version. By default, the property name is "forceVersion".

Constructors

Link copied to clipboard
constructor(project: Project, providerFactory: ProviderFactory, objectFactory: ObjectFactory, projectDir: File, logger: Logger, buildMetadataSeparator: Property<String> = objectFactory.propertyWithDefault("+"), computeReleaseVersion: Property<Boolean> = objectFactory.propertyWithDefault(false), developmentCounterLength: Property<Int> = objectFactory.propertyWithDefault(2), developmentIdentifier: Property<String> = objectFactory.propertyWithDefault("dev"), distanceCounterRadix: Property<Int> = objectFactory.propertyWithDefault(DEFAULT_RADIX), enforceSemanticVersioning: Property<Boolean> = objectFactory.propertyWithDefault(true), forceVersionPropertyName: Property<String> = objectFactory.propertyWithDefault("forceVersion"), fullHash: Property<Boolean> = objectFactory.propertyWithDefault(false), includeLightweightTags: Property<Boolean> = objectFactory.propertyWithDefault(true), maxVersionLength: Property<Int> = objectFactory.propertyWithDefault(Int.MAX_VALUE), minimumVersion: Property<String> = objectFactory.propertyWithDefault("0.1.0"), noTagIdentifier: Property<String> = objectFactory.propertyWithDefault("archeo"), preReleaseSeparator: Property<String> = objectFactory.propertyWithDefault("-"), versionPrefix: Property<String> = objectFactory.propertyWithDefault(""), updateStrategy: (List<String>) -> UpdateType = { _ -> UpdateType.PATCH })

Types

Link copied to clipboard
object Companion

The name of the extension, namely of the DSL entry-point.

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val distanceCounterRadix: Property<Int>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val fullHash: Property<Boolean>
Link copied to clipboard

The version computed by the plugin, computed lazily. Avoid calling this property's toString() method during the configuration phase, as it will trigger the computation of the version, which should happen as late as possible.

Link copied to clipboard
Link copied to clipboard

Finds the closest tag compatible with Semantic Version, or returns null if none is available.

Link copied to clipboard
val maxVersionLength: Property<Int>
Link copied to clipboard
val minimumVersion: Property<String>
Link copied to clipboard
val noTagIdentifier: Property<String>
Link copied to clipboard
Link copied to clipboard
val versionPrefix: Property<String>

Functions

Link copied to clipboard

Sets the strategy to be used to compute the version increment based on the commit messages since the last tag. The default strategy is to increment the patch version.

Link copied to clipboard

Computes a valid Semantic Versioning 2.0 version based on the status of the current git repository.

Link copied to clipboard

If called, the system will also consider non-annotated tags.

Link copied to clipboard
open override fun toString(): String