Package io.github.joke.conventionalversion


@NullMarked package io.github.joke.conventionalversion
The Gradle surface: the settings plugin, its configuration, and the value source that reads git.

A settings plugin rather than a project plugin because isolated projects forbids cross-project model access, so a project plugin would have to read git once per project with nowhere to share the answer. Settings.gradle.lifecycle.beforeProject is the sanctioned replacement for allprojects and gives one calculation for any number of projects.

Unit tested and mutation tested like any other package. Being wiring does not put it out of reach: the action this package hands to Gradle is a named type, instantiated and invoked directly by its spec, so what it does to a project is asserted here rather than inferred from a real build.

Nothing in this project executes a Gradle build under test. Configuration cache and isolated projects compatibility rest on construction and review: git is read through a ValueSource so the cache re-evaluates it, and AssignVersion declares everything it captures. Neither property is verified by execution - see that class for what that has already cost once.