Documentation
¶
Overview ¶
Package version provides semantic versioning utilities for release management.
Index ¶
- func NewCommand() *cobra.Command
- type BumpType
- type Calculator
- type Version
- func (v *Version) Base() string
- func (v *Version) BaseVersion() *Version
- func (v *Version) Bump(bump BumpType) *Version
- func (v *Version) Compare(other *Version) int
- func (v *Version) Equal(other *Version) bool
- func (v *Version) NextHotfix() *Version
- func (v *Version) String() string
- func (v *Version) WithGrammar(spec taggrammar.Spec) *Version
- func (v *Version) WithHotfix(m int) *Version
- func (v *Version) WithRC(rc int) *Version
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type BumpType ¶
type BumpType int
BumpType represents the type of version bump
func DetermineBumpType ¶
func DetermineBumpType(commits []changelog.ConventionalCommit) BumpType
DetermineBumpType analyzes commits and returns the highest bump type needed
type Calculator ¶
type Calculator struct {
// contains filtered or unexported fields
}
Calculator handles version calculation for the release workflow
func NewCalculator ¶
func NewCalculator(prefix string) *Calculator
NewCalculator creates a new version calculator for the default grammar with a custom prefix. An empty prefix defaults to "v".
func NewCalculatorWithGrammar ¶ added in v0.10.0
func NewCalculatorWithGrammar(spec taggrammar.Spec) *Calculator
NewCalculatorWithGrammar creates a version calculator that emits tags in the shape described by spec, so a caller with a non-default token, separator, or prefix gets a matching next version.
func (*Calculator) CalculateNext ¶
func (c *Calculator) CalculateNext(currentDevVersion, nextEnvVersion string, commits []changelog.ConventionalCommit) (*Version, error)
CalculateNext determines the next version for the lowest environment Parameters:
- currentDevVersion: current version in dev (may be empty or same as nextEnvVersion after promotion)
- nextEnvVersion: version in the next environment (e.g., test)
- commits: conventional commits between nextEnv's SHA and HEAD
Returns the calculated version with appropriate RC suffix
type Version ¶
type Version struct {
Major int
Minor int
Patch int
PreRelease int // -1 means no pre-release suffix, >= 0 is the RC number
Hotfix int // -1 means no hotfix segment, >= 0 is the hotfix number
Prefix string // e.g., "v" or custom prefix
// contains filtered or unexported fields
}
Version represents a semantic version with optional pre-release suffix
func ParseBaseWithGrammar ¶ added in v0.10.0
func ParseBaseWithGrammar(spec taggrammar.Spec, s string) (*Version, error)
ParseBaseWithGrammar parses the numeric core (prefix and major.minor.patch) of s under spec, tolerating and discarding any pre-release suffix such as an -rc.N, -dryrun.N, or other exercise tag that the strict Parse rejects. The returned Version always has no pre-release or hotfix segment. It errors only when the core itself is not a valid vX.Y.Z triple. Version calculations that derive their next version solely from a base can use this so a stray suffixed value recorded as the latest does not abort the whole calculation.
func ParseWithGrammar ¶ added in v0.10.0
func ParseWithGrammar(spec taggrammar.Spec, s string) (*Version, error)
ParseWithGrammar parses s into a Version under spec. The numeric fields come from the canonical grammar so the two never drift; the prefix is the literal run the tag leads with, which the grammar has already validated.
func (*Version) BaseVersion ¶
BaseVersion returns a copy without pre-release suffix
func (*Version) Compare ¶ added in v0.2.0
Compare returns -1, 0, or +1 reporting whether v sorts before, equal to, or after other under semver precedence. It compares major, minor, and patch numerically; then a version with a pre-release sorts before one without; then pre-release numbers compare numerically; then a version without a hotfix segment sorts before one with a hotfix; then hotfix numbers compare numerically.
func (*Version) Equal ¶
Equal returns true if two versions have the same major.minor.patch (ignoring RC)
func (*Version) NextHotfix ¶ added in v0.2.0
NextHotfix returns a copy of the version with its hotfix number incremented. If the version has no hotfix segment yet, the result is hotfix 1, so an rc.2 version becomes rc.2.hotfix.1.
func (*Version) String ¶
String returns the version as a string. The prefix and numeric core come from the version's own fields; the pre-release token and separator come from its grammar, so a custom grammar renders its own shape while the default renders the historical "-rc." form.
func (*Version) WithGrammar ¶ added in v0.10.0
func (v *Version) WithGrammar(spec taggrammar.Spec) *Version
WithGrammar returns a copy of v that renders under spec, so a version parsed with ParseWithGrammar carries its grammar through subsequent copy operations (WithHotfix, WithRC, Bump) and renders its configured pre-release shape. The zero/default grammar is preserved as-is, so a default version is unchanged.
func (*Version) WithHotfix ¶ added in v0.2.0
WithHotfix returns a copy of the version with the given hotfix number, preserving the major, minor, patch, pre-release, and prefix.