Files
consensus/pkg/go/version/version.go
2025-09-24 04:01:37 -05:00

60 lines
1.1 KiB
Go

// Package version provides version information
package version
import "fmt"
// Application represents an application version
type Application struct {
Major int
Minor int
Patch int
// Additional metadata
Name string
}
// String returns the version string
func (v *Application) String() string {
return fmt.Sprintf("%s-%d.%d.%d", v.Name, v.Major, v.Minor, v.Patch)
}
// Compatible returns whether versions are compatible
func (v *Application) Compatible(other *Application) bool {
// Major version must match
return v.Major == other.Major
}
// Compare compares two versions
// Returns -1 if v < other, 0 if v == other, 1 if v > other
func (v *Application) Compare(other *Application) int {
if v.Major < other.Major {
return -1
}
if v.Major > other.Major {
return 1
}
if v.Minor < other.Minor {
return -1
}
if v.Minor > other.Minor {
return 1
}
if v.Patch < other.Patch {
return -1
}
if v.Patch > other.Patch {
return 1
}
return 0
}
// Current returns the current version
func Current() *Application {
return &Application{
Major: 1,
Minor: 0,
Patch: 0,
Name: "lux",
}
}