Package io.github.duckasteroid.gradle.versioning.releaseflow
package io.github.duckasteroid.gradle.versioning.releaseflow
-
ClassDescriptionGradle-facing configuration for
ChangelogGenerator, registered byReleaseFlowPluginas thechangelog { }extension.Turns a list of commit messages into grouped Markdown release notes, the same idea implemented by tools like conventional-changelog and git-cliff: group by theCommitAnalyzer.Bumpeach commit resolves to (using the sametypeRulesthe version bump itself uses), not by the raw commit type word, so a custommajorTypesentry (e.g.checkReleaseWorkflows's read-only counterpart toManagedFileInstaller: parses the marker left by a matchinginstall(...)call and reports whether the installed file is missing, foreign (no marker, or a marker for a different componentId), edited-since-install, stale, or up to date.Safe-install logic behind "install a versioned, self-updating file" tasks (e.g.The "# duckasteroid-managed: componentId version sha256:hash" marker comment that aManagedFileInstaller.install(...)call stamps as the first line of every file it installs, and that a matchingManagedFileChecker.check(...)call later re-parses to detect staleness/tampering.Gradle-facing configuration for how the tagReleaseCandidates/tagReleaseCandidate tasks treat previous release candidates once a new one is minted, registered byReleaseFlowPluginas thereleaseCandidates { }extension.Opt-in release-engineering tasks for adevelop -> release -> maingit flow.Plain-file/process helpers forReleaseFlowPlugin's doLast blocks - changelog writing, tagging/pushing via the git CLI, and the manifest's relative-path formatting.Thebuild/release-manifest.jsonfile written by thetagReleaseCandidates/promoteReleaseCandidatesaggregator tasks (ReleaseFlowPlugin) - one entry per project that actually got tagged on a given run, read back by the bundled GitHub Actions workflow to turn into onegh release createper entry, instead of guessing a single tag viagit describe --tags --exact-match HEAD(which only ever worked when exactly one project released per push).Shared per-module version-analysis snapshot behind explainVersion/explainVersions - both tasks' console output and their build/version-report.json file are built from exactly the sameVersionReport.Entry, so the two can never drift from each other, andVersionReport.buildEntry(java.lang.String, java.io.File, java.lang.String, java.lang.String, java.util.List<java.lang.String>, java.util.Map<io.github.duckasteroid.gradle.versioning.CommitAnalyzer.Bump, java.util.Set<java.lang.String>>, java.util.List<java.lang.String>, java.lang.String, java.lang.String)calls the exact sameVersionResolvermethods tagReleaseCandidate(s) itself calls, so the preview can never drift from what tagging would actually do either.One commit's syntactic parse plus the bump it resolves to - seeCommitAnalyzer.One project's full version-analysis breakdown.Gradle-facing configuration for explainVersion/explainVersions' structured JSON report, registered byReleaseFlowPluginas theversionReport { }extension.