GitSemVerExtension

open class GitSemVerExtension @JvmOverloads constructor(providerFactory: ProviderFactory, objectFactory: ObjectFactory, projectDir: File, version: String, logger: Logger, val minimumVersion: Property<String> = objectFactory.propertyWithDefault("0.1.0"), val developmentIdentifier: Property<String> = objectFactory.propertyWithDefault("dev"), val noTagIdentifier: Property<String> = objectFactory.propertyWithDefault("archeo"), val fullHash: Property<Boolean> = objectFactory.propertyWithDefault(false), val maxVersionLength: Property<Int> = objectFactory.propertyWithDefault(Int.MAX_VALUE), val developmentCounterLength: Property<Int> = objectFactory.propertyWithDefault(2), val enforceSemanticVersioning: Property<Boolean> = objectFactory.propertyWithDefault(true), val preReleaseSeparator: Property<String> = objectFactory.propertyWithDefault("-"), val buildMetadataSeparator: Property<String> = objectFactory.propertyWithDefault("+"), val distanceCounterRadix: Property<Int> = objectFactory.propertyWithDefault(DEFAULT_RADIX), val versionPrefix: Property<String> = objectFactory.propertyWithDefault(""), val includeLightweightTags: Property<Boolean> = objectFactory.propertyWithDefault(true), val forceVersionPropertyName: Property<String> = objectFactory.propertyWithDefault("forceVersion"), 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

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

  • buildMetadataSeparator, how to separate the pre-relase 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(providerFactory: ProviderFactory, objectFactory: ObjectFactory, projectDir: File, version: String, logger: Logger, minimumVersion: Property<String> = objectFactory.propertyWithDefault("0.1.0"), developmentIdentifier: Property<String> = objectFactory.propertyWithDefault("dev"), noTagIdentifier: Property<String> = objectFactory.propertyWithDefault("archeo"), fullHash: Property<Boolean> = objectFactory.propertyWithDefault(false), maxVersionLength: Property<Int> = objectFactory.propertyWithDefault(Int.MAX_VALUE), developmentCounterLength: Property<Int> = objectFactory.propertyWithDefault(2), enforceSemanticVersioning: Property<Boolean> = objectFactory.propertyWithDefault(true), preReleaseSeparator: Property<String> = objectFactory.propertyWithDefault("-"), buildMetadataSeparator: Property<String> = objectFactory.propertyWithDefault("+"), distanceCounterRadix: Property<Int> = objectFactory.propertyWithDefault(DEFAULT_RADIX), versionPrefix: Property<String> = objectFactory.propertyWithDefault(""), includeLightweightTags: Property<Boolean> = objectFactory.propertyWithDefault(true), forceVersionPropertyName: Property<String> = objectFactory.propertyWithDefault("forceVersion"), 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
val distanceCounterRadix: Property<Int>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val fullHash: Property<Boolean>
Link copied to clipboard
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

modifies the version of the current project, assigning the value computed by computeVersion.

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

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