Class LinkedVersionReconciler
java.lang.Object
io.github.joke.conventionalversion.LinkedVersionReconciler
Raises every member of a linked group to the highest version any member calculated.
Runs after the per-package calculation, which is where release-please applies it: its
plugin reduces the group's candidates to the highest and then pushes a synthetic release for the
members that had none, so a member with no qualifying commits still releases.
This is the one propagation the calculation performs, and it is legitimate for the only reason
that matters: release-please does it. The Gradle project dependency graph gets no such
treatment, because release-please cannot see it.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected booleananyReleasable(List<VersionCatalogue.PackageVersion> members) protected Optional<LinkedGroup> groupOf(VersionCatalogue.PackageVersion version, List<LinkedGroup> groups) protected Optional<SemanticVersion> highestOf(List<VersionCatalogue.PackageVersion> members) protected List<VersionCatalogue.PackageVersion> membersOf(LinkedGroup group, List<VersionCatalogue.PackageVersion> all) protected VersionCatalogue.PackageVersionraise(VersionCatalogue.PackageVersion version, List<VersionCatalogue.PackageVersion> members) protected VersionResultraised(VersionResult member, SemanticVersion highest, boolean releasable) A member already on its release commit stays bare, because the group releasing together does not make an unreleased member released.protected VersionCatalogue.PackageVersionraiseIfGrouped(VersionCatalogue.PackageVersion version, List<LinkedGroup> groups, List<VersionCatalogue.PackageVersion> all) reconcile(List<LinkedGroup> groups, List<VersionCatalogue.PackageVersion> calculated) Every package, with the members of each linked group levelled up to their highest version.protected Optional<SemanticVersion> versionOf(VersionResult result) Total: a version that does not parse simply does not take part, rather than failing the build.
-
Constructor Details
-
LinkedVersionReconciler
public LinkedVersionReconciler()
-
-
Method Details
-
reconcile
public List<VersionCatalogue.PackageVersion> reconcile(List<LinkedGroup> groups, List<VersionCatalogue.PackageVersion> calculated) Every package, with the members of each linked group levelled up to their highest version. -
raiseIfGrouped
@VisibleForTesting protected VersionCatalogue.PackageVersion raiseIfGrouped(VersionCatalogue.PackageVersion version, List<LinkedGroup> groups, List<VersionCatalogue.PackageVersion> all) -
groupOf
@VisibleForTesting protected Optional<LinkedGroup> groupOf(VersionCatalogue.PackageVersion version, List<LinkedGroup> groups) -
membersOf
@VisibleForTesting protected List<VersionCatalogue.PackageVersion> membersOf(LinkedGroup group, List<VersionCatalogue.PackageVersion> all) -
raise
@VisibleForTesting protected VersionCatalogue.PackageVersion raise(VersionCatalogue.PackageVersion version, List<VersionCatalogue.PackageVersion> members) -
highestOf
@VisibleForTesting protected Optional<SemanticVersion> highestOf(List<VersionCatalogue.PackageVersion> members) -
anyReleasable
-
versionOf
Total: a version that does not parse simply does not take part, rather than failing the build. -
raised
@VisibleForTesting protected VersionResult raised(VersionResult member, SemanticVersion highest, boolean releasable) A member already on its release commit stays bare, because the group releasing together does not make an unreleased member released.
-