Documentation
¶
Overview ¶
Package version provides semantic versioning utilities for release management.
Index ¶
- func NewCommand() *cobra.Command
- func StripRC(version string) (string, error)
- type BumpType
- type Calculator
- type Version
- func GetLatestRelease(tags []string) (*Version, error)
- func Parse(s string) (*Version, error)
- func ParseBase(s string) (*Version, error)
- func ParseBaseWithGrammar(spec taggrammar.Spec, s string) (*Version, error)
- func ParseTolerant(s string) (*Version, error)
- func ParseTolerantWithGrammar(spec taggrammar.Spec, s string) (*Version, error)
- func ParseWithGrammar(spec taggrammar.Spec, s string) (*Version, error)
- 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 GetLatestRelease ¶
GetLatestRelease returns the latest published (non-prerelease) version from a list of tags
func ParseBase ¶ added in v0.8.0
ParseBase parses the numeric core (prefix and major.minor.patch) of a version string, 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 ParseBaseWithGrammar ¶ added in v0.10.0
func ParseBaseWithGrammar(spec taggrammar.Spec, s string) (*Version, error)
ParseBaseWithGrammar parses the numeric core of s under spec, tolerating and discarding any pre-release suffix. See ParseBase for the full contract; this form lets callers supply a non-default grammar.
func ParseTolerant ¶ added in v0.10.0
ParseTolerant parses s on the read side under the default grammar, tolerating a foreign pre-release identifier and discarding build metadata. See ParseTolerantWithGrammar for the full contract.
func ParseTolerantWithGrammar ¶ added in v0.10.0
func ParseTolerantWithGrammar(spec taggrammar.Spec, s string) (*Version, error)
ParseTolerantWithGrammar parses s on the read side under spec. It recognizes the numeric core plus an optional foreign pre-release identifier and optional build metadata. A recognized pre-release is marked present (PreRelease >= 0) so it sorts below its release; the specific identifier is not interpreted, since the read-side contract is only "any pre-release sorts below the release" plus cascade's own rc counter, which the calculator handles separately. Build metadata is discarded and never stored, so it is never emitted. It errors only when s lacks a valid numeric core.
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.