A CHANGELOG.md, rendered from release notes. Pure.
Keep a Changelog 1.1.0 shape over the Note value defined by
hive-build.promote.notes, so the file and the storefront show one
derivation of the same commits rather than two accounts of them.
The generated document is disposable: every release rewrites it in full.
The prose a generator cannot derive (what the version number promises, how
to migrate off a break, a deprecation window) is authored in
changelog.d/<version>.md and spliced in here, never overwritten.
A CHANGELOG.md, rendered from release notes. Pure. Keep a Changelog 1.1.0 shape over the Note value defined by `hive-build.promote.notes`, so the file and the storefront show one derivation of the same commits rather than two accounts of them. The generated document is disposable: every release rewrites it in full. The prose a generator cannot derive (what the version number promises, how to migrate off a break, a deprecation window) is authored in `changelog.d/<version>.md` and spliced in here, never overwritten.
(breaking-block entries)Every breaking change, above the sections, or nil when there are none.
Lifted out of its own kind on purpose: a reader deciding whether to take this version has one question that outranks what else arrived with it.
Every breaking change, above the sections, or nil when there are none. Lifted out of its own kind on purpose: a reader deciding whether to take this version has one question that outranks what else arrived with it.
The header of a generated changelog: what the file is, and where to author what it cannot derive.
The header of a generated changelog: what the file is, and where to author what it cannot derive.
(entry-line {:note/keys [scope summary]})One note entry as a list item. A scoped commit keeps its scope as the lead.
One note entry as a list item. A scoped commit keeps its scope as the lead.
(release-block {:release/keys [version date prose note]})One release: its heading, its authored prose, then what git says.
Every part ends in a newline so the join leaves a blank line between them, which is what makes them separate markdown blocks rather than one run-on paragraph.
One release: its heading, its authored prose, then what git says. Every part ends in a newline so the join leaves a blank line between them, which is what makes them separate markdown blocks rather than one run-on paragraph.
(render {:changelog/keys [preamble footer releases]})The whole document, newest release first.
A changelog with no releases still renders its preamble: a repository that has never tagged has an honest empty changelog, not a missing one. The footer carries whatever the render had to leave out.
The whole document, newest release first. A changelog with no releases still renders its preamble: a repository that has never tagged has an honest empty changelog, not a missing one. The footer carries whatever the render had to leave out.
(routine-line {:note/keys [routine unconventional]})The housekeeping this release also carried, as one sentence, or nil.
Reported rather than dropped so a release that is entirely dependency bumps
reads as one instead of as an empty release. The counts add with +': they
are unbounded in the schema, and a renderer must not throw on a number it
was handed.
The housekeeping this release also carried, as one sentence, or nil. Reported rather than dropped so a release that is entirely dependency bumps reads as one instead of as an empty release. The counts add with `+'`: they are unbounded in the schema, and a renderer must not throw on a number it was handed.
(section-block {:section/keys [heading entries]})One published kind as a markdown section, or nil when it has no entries.
One published kind as a markdown section, or nil when it has no entries.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |