All Classes and Interfaces
Class
Description
Gradle-facing configuration for
ChangelogGenerator, registered by ReleaseFlowPlugin
as the changelog { } 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 the
CommitAnalyzer.Bump each
commit resolves to (using the same typeRules the version bump itself uses), not by the
raw commit type word, so a custom majorTypes entry (e.g.How far back the release-flow plugin's changelog generator should look when generating notes for
a release candidate (the
changelogForReleaseCandidate task, controlled via the
changelog { rcScope = ... } extension).Minimal Java port of the semantic-release commit-analyzer concept
(https://github.com/semantic-release/commit-analyzer), scoped to the default
Conventional Commits (https://www.conventionalcommits.org/) / Angular rule set only - there is
deliberately no configurable "preset" system here, unlike the JS original, since this plugin only
ever needs the one rule set.
The four possible outcomes of analyzing a commit (or a batch of commits), in ascending
severity.
The syntactic parse of a commit message, independent of any type -> bump configuration -
see
CommitAnalyzer.parse(String).Gradle-facing configuration for
CommitAnalyzer's type-to-bump mapping.Constructing a JGit
Repository (via RepositoryBuilder().build()) makes JGit
shell out to the real git binary (git --version, then
git config --system --show-origin --list -z) the first time it needs the system-level
git config - SystemReader.getSystemConfig() -> openSystemConfig() ->
FS.discoverGitSystemConfig() -> FS.readPipe() - because there's no portable
file-path convention for where that config lives.checkReleaseWorkflows's read-only counterpart to ManagedFileInstaller: parses the
marker left by a matching install(...) 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 a
ManagedFileInstaller.install(...) call stamps as the first line of every file it
installs, and that a matching ManagedFileChecker.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 by
ReleaseFlowPlugin as
the releaseCandidates { } extension.Opt-in release-engineering tasks for a
develop -> release -> main git flow.Plain-file/process helpers for
ReleaseFlowPlugin's doLast blocks - changelog writing,
tagging/pushing via the git CLI, and the manifest's relative-path formatting.The
build/release-manifest.json file written by the tagReleaseCandidates /
promoteReleaseCandidates aggregator 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 one gh release create per entry, instead of guessing a single tag via
git describe --tags --exact-match HEAD (which only ever worked when exactly one project
released per push).Computes
project.version from git history plus Conventional Commits - a small
semantic-release commit-analyzer port (VersionResolver/CommitAnalyzer).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 same
VersionReport.Entry, so the two can never drift from each other, and VersionReport.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 same VersionResolver methods 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 - see
CommitAnalyzer.One project's full version-analysis breakdown.
Gradle-facing configuration for explainVersion/explainVersions' structured JSON report,
registered by
ReleaseFlowPlugin as the versionReport { } extension.Derives project versions from git history rather than a single nearest tag.