docs: add full godoc comments for vociferate API
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
// Package vociferate provides changelog-driven release preparation utilities.
|
||||||
|
//
|
||||||
|
// It updates version metadata, promotes the Unreleased changelog section into a
|
||||||
|
// dated version section, recommends the next semantic version tag from pending
|
||||||
|
// changelog entries, and normalizes changelog links when repository metadata is
|
||||||
|
// available.
|
||||||
package vociferate
|
package vociferate
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -21,9 +27,16 @@ var unreleasedHeadingRe = regexp.MustCompile(`(?m)^## \[Unreleased\](?:\([^\n)]*
|
|||||||
var releaseHeadingRe = regexp.MustCompile(`(?m)^## \[(\d+\.\d+\.\d+)\](?:\([^\n)]*\))? - `)
|
var releaseHeadingRe = regexp.MustCompile(`(?m)^## \[(\d+\.\d+\.\d+)\](?:\([^\n)]*\))? - `)
|
||||||
|
|
||||||
type Options struct {
|
type Options struct {
|
||||||
VersionFile string
|
// VersionFile is the path to the file that stores the current version,
|
||||||
|
// relative to the repository root. When empty, release-version is used.
|
||||||
|
VersionFile string
|
||||||
|
// VersionPattern is a regular expression with exactly one capture group for
|
||||||
|
// extracting the current version from VersionFile.
|
||||||
|
// When empty, a line-oriented default matcher is used.
|
||||||
VersionPattern string
|
VersionPattern string
|
||||||
Changelog string
|
// Changelog is the path to the changelog file, relative to the repository
|
||||||
|
// root. When empty, changelog.md is used.
|
||||||
|
Changelog string
|
||||||
}
|
}
|
||||||
|
|
||||||
type semver struct {
|
type semver struct {
|
||||||
@@ -38,6 +51,14 @@ type resolvedOptions struct {
|
|||||||
Changelog string
|
Changelog string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Prepare updates version state and promotes the Unreleased changelog notes
|
||||||
|
// into a new release section.
|
||||||
|
//
|
||||||
|
// The version may be provided with or without a leading "v" and releaseDate
|
||||||
|
// must use YYYY-MM-DD formatting. Prepare updates both the configured version
|
||||||
|
// file and changelog, and enriches changelog headings with repository links
|
||||||
|
// when repository metadata can be derived from CI environment variables or the
|
||||||
|
// origin git remote.
|
||||||
func Prepare(rootDir, version, releaseDate string, options Options) error {
|
func Prepare(rootDir, version, releaseDate string, options Options) error {
|
||||||
normalizedVersion := strings.TrimPrefix(strings.TrimSpace(version), "v")
|
normalizedVersion := strings.TrimPrefix(strings.TrimSpace(version), "v")
|
||||||
if normalizedVersion == "" {
|
if normalizedVersion == "" {
|
||||||
@@ -65,6 +86,16 @@ func Prepare(rootDir, version, releaseDate string, options Options) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RecommendedTag returns the next semantic release tag (for example, v1.2.3)
|
||||||
|
// based on the current version and Unreleased changelog content.
|
||||||
|
//
|
||||||
|
// Bump rules are:
|
||||||
|
// - major: Unreleased contains a Breaking section or Removed entries
|
||||||
|
// - minor: Unreleased contains Added entries
|
||||||
|
// - patch: all other cases
|
||||||
|
//
|
||||||
|
// When no previous release is present in the changelog, the base version is
|
||||||
|
// treated as 0.0.0.
|
||||||
func RecommendedTag(rootDir string, options Options) (string, error) {
|
func RecommendedTag(rootDir string, options Options) (string, error) {
|
||||||
resolved, err := resolveOptions(options)
|
resolved, err := resolveOptions(options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user