diff options
author | Stefan Haller <stefan@haller-berlin.de> | 2024-03-10 20:59:11 +0100 |
---|---|---|
committer | Stefan Haller <stefan@haller-berlin.de> | 2024-03-12 13:27:14 +0100 |
commit | 2f4437591e9a6e2d7ce46a1a9607762bf2fd002a (patch) | |
tree | d24293aceb6c8b3fad58805ac18bb838620a173d /pkg/gui/types/version_number.go | |
parent | d12ceeb1ecac2bf9783f0febb48aca335805524a (diff) |
Show popup message with breaking changes on startup
Diffstat (limited to 'pkg/gui/types/version_number.go')
-rw-r--r-- | pkg/gui/types/version_number.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/pkg/gui/types/version_number.go b/pkg/gui/types/version_number.go new file mode 100644 index 000000000..ae51a2722 --- /dev/null +++ b/pkg/gui/types/version_number.go @@ -0,0 +1,41 @@ +package types + +import ( + "errors" + "regexp" + "strconv" +) + +type VersionNumber struct { + Major, Minor, Patch int +} + +func (v *VersionNumber) IsOlderThan(otherVersion *VersionNumber) bool { + this := v.Major*1000*1000 + v.Minor*1000 + v.Patch + other := otherVersion.Major*1000*1000 + otherVersion.Minor*1000 + otherVersion.Patch + return this < other +} + +func ParseVersionNumber(versionStr string) (*VersionNumber, error) { + re := regexp.MustCompile(`^v?(\d+)\.(\d+)(?:\.(\d+))?$`) + matches := re.FindStringSubmatch(versionStr) + if matches == nil { + return nil, errors.New("unexpected version format: " + versionStr) + } + + v := &VersionNumber{} + var err error + + if v.Major, err = strconv.Atoi(matches[1]); err != nil { + return nil, err + } + if v.Minor, err = strconv.Atoi(matches[2]); err != nil { + return nil, err + } + if len(matches[3]) > 0 { + if v.Patch, err = strconv.Atoi(matches[3]); err != nil { + return nil, err + } + } + return v, nil +} |