123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package version
- import (
- "fmt"
- )
- type Version struct {
- Major int
- Minor int
- Patch int
- Extension string
- Text string
- }
- func (a *Version) Compare(b *Version) int {
- if a == nil || b == nil {
- return 0
- }
- if a.Major == b.Major {
- if a.Minor == b.Minor {
- if a.Patch == b.Patch {
- return 0
- } else if a.Patch > b.Patch {
- return 1
- }
- } else if a.Minor > b.Minor {
- return 1
- }
- } else if a.Major > b.Major {
- return 1
- }
- return -1
- }
- func (a *Version) Less(b *Version) bool {
- return a.Compare(b) < 0
- }
- func (v *Version) SemanticString() string {
- if v == nil {
- return ""
- }
- return fmt.Sprintf("%d.%d.%d%s", v.Major, v.Minor, v.Patch, v.Extension)
- }
- func (v *Version) String() string {
- if v == nil {
- return ""
- }
- if v.Text != "" {
- return v.Text
- }
- return v.SemanticString()
- }
|