Documentation
¶
Overview ¶
Package calculator implements the version calculation pipeline: strategy evaluation, base version selection, increment logic, and pre-release tag management.
Index ¶
- type BaseVersionCalculator
- type BaseVersionResult
- type IncrementExplanation
- type IncrementResult
- type IncrementStrategyFinder
- func (f *IncrementStrategyFinder) AnalyzeCommitIncrement(c git.Commit, ec config.EffectiveConfiguration) semver.VersionField
- func (f *IncrementStrategyFinder) DetermineIncrementedField(ctx *context.GitVersionContext, bv strategy.BaseVersion, ...) (semver.VersionField, error)
- func (f *IncrementStrategyFinder) DetermineIncrementedFieldExplained(ctx *context.GitVersionContext, bv strategy.BaseVersion, ...) (IncrementResult, error)
- type MainlineVersionCalculator
- type NextVersionCalculator
- type VersionResult
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BaseVersionCalculator ¶
type BaseVersionCalculator struct {
// contains filtered or unexported fields
}
BaseVersionCalculator runs all strategies, computes effective versions for ranking, and selects the winning base version.
func NewBaseVersionCalculator ¶
func NewBaseVersionCalculator( store *git.RepositoryStore, strategies []strategy.VersionStrategy, increment *IncrementStrategyFinder, ) *BaseVersionCalculator
NewBaseVersionCalculator creates a new BaseVersionCalculator.
func (*BaseVersionCalculator) Calculate ¶
func (c *BaseVersionCalculator) Calculate( ctx *context.GitVersionContext, ec config.EffectiveConfiguration, explain bool, ) (BaseVersionResult, error)
Calculate runs all strategies, selects the highest effective version, and returns the winning base version.
type BaseVersionResult ¶
type BaseVersionResult struct {
BaseVersion strategy.BaseVersion
EffectiveConfiguration config.EffectiveConfiguration
AllCandidates []strategy.BaseVersion
}
BaseVersionResult holds the selected base version and its effective config.
type IncrementExplanation ¶
type IncrementExplanation struct {
Steps []string
}
IncrementExplanation records the reasoning behind an increment decision.
func (*IncrementExplanation) Add ¶
func (e *IncrementExplanation) Add(step string)
Add appends a reasoning step. Nil-safe.
func (*IncrementExplanation) Addf ¶
func (e *IncrementExplanation) Addf(format string, args ...any)
Addf appends a formatted reasoning step. Nil-safe.
type IncrementResult ¶
type IncrementResult struct {
Field semver.VersionField
Explanation *IncrementExplanation // nil when explain is false
}
IncrementResult holds the determined increment and optional reasoning.
type IncrementStrategyFinder ¶
type IncrementStrategyFinder struct {
// contains filtered or unexported fields
}
IncrementStrategyFinder scans commit messages to determine the version bump.
func NewIncrementStrategyFinder ¶
func NewIncrementStrategyFinder(store *git.RepositoryStore) *IncrementStrategyFinder
NewIncrementStrategyFinder creates a new IncrementStrategyFinder.
func (*IncrementStrategyFinder) AnalyzeCommitIncrement ¶
func (f *IncrementStrategyFinder) AnalyzeCommitIncrement( c git.Commit, ec config.EffectiveConfiguration, ) semver.VersionField
AnalyzeCommitIncrement returns the version bump for a single commit message. Exported for use by MainlineVersionCalculator in per-commit mode.
func (*IncrementStrategyFinder) DetermineIncrementedField ¶
func (f *IncrementStrategyFinder) DetermineIncrementedField( ctx *context.GitVersionContext, bv strategy.BaseVersion, ec config.EffectiveConfiguration, ) (semver.VersionField, error)
DetermineIncrementedField scans commits between the base version source and the current commit to find the highest version bump from commit messages. It respects the configured commit message convention and increment mode.
func (*IncrementStrategyFinder) DetermineIncrementedFieldExplained ¶
func (f *IncrementStrategyFinder) DetermineIncrementedFieldExplained( ctx *context.GitVersionContext, bv strategy.BaseVersion, ec config.EffectiveConfiguration, explain bool, ) (IncrementResult, error)
DetermineIncrementedFieldExplained works like DetermineIncrementedField but records reasoning steps when explain is true.
type MainlineVersionCalculator ¶
type MainlineVersionCalculator struct {
// contains filtered or unexported fields
}
MainlineVersionCalculator computes versions in mainline mode. Supports two increment modes controlled by ec.MainlineIncrement:
- Aggregate (default): highest increment applied once, commit count in build metadata
- EachCommit: version incremented per commit individually
func NewMainlineVersionCalculator ¶
func NewMainlineVersionCalculator( store *git.RepositoryStore, increment *IncrementStrategyFinder, ) *MainlineVersionCalculator
NewMainlineVersionCalculator creates a new MainlineVersionCalculator.
func (*MainlineVersionCalculator) FindMainlineModeVersion ¶
func (m *MainlineVersionCalculator) FindMainlineModeVersion( ctx *context.GitVersionContext, bv strategy.BaseVersion, ec config.EffectiveConfiguration, explain bool, ) (semver.SemanticVersion, *IncrementExplanation, error)
FindMainlineModeVersion computes the mainline version.
type NextVersionCalculator ¶
type NextVersionCalculator struct {
// contains filtered or unexported fields
}
NextVersionCalculator orchestrates the full version calculation pipeline.
func NewNextVersionCalculator ¶
func NewNextVersionCalculator( store *git.RepositoryStore, strategies []strategy.VersionStrategy, ) *NextVersionCalculator
NewNextVersionCalculator creates a NextVersionCalculator with all sub-calculators.
func (*NextVersionCalculator) Calculate ¶
func (c *NextVersionCalculator) Calculate( ctx *context.GitVersionContext, ec config.EffectiveConfiguration, explain bool, ) (VersionResult, error)
Calculate computes the next version for the given context.
type VersionResult ¶
type VersionResult struct {
Version semver.SemanticVersion
BaseVersion strategy.BaseVersion
BranchName string
CommitsSince int64
AllCandidates []strategy.BaseVersion
IncrementExplanation *IncrementExplanation // nil when explain is false
PreReleaseSteps []string // nil when explain is false
}
VersionResult holds the calculated version and metadata.