calculator

package
v1.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 24, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package calculator implements the version calculation pipeline: strategy evaluation, base version selection, increment logic, and pre-release tag management.

Index

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

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

AnalyzeCommitIncrement returns the version bump for a single commit message. Exported for use by MainlineVersionCalculator in per-commit mode.

func (*IncrementStrategyFinder) DetermineIncrementedField

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

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

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL