From 2f4437591e9a6e2d7ce46a1a9607762bf2fd002a Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Sun, 10 Mar 2024 20:59:11 +0100 Subject: Show popup message with breaking changes on startup --- pkg/gui/types/version_number.go | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 pkg/gui/types/version_number.go (limited to 'pkg/gui/types/version_number.go') 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 +} -- cgit v1.2.3