Spaces:
Running
Running
File size: 1,972 Bytes
b110593 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
// _ _
// __ _____ __ ___ ___ __ _| |_ ___
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \
// \ V V / __/ (_| |\ V /| | (_| | || __/
// \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___|
//
// Copyright © 2016 - 2024 Weaviate B.V. All rights reserved.
//
// CONTACT: [email protected]
//
package client
import (
"fmt"
"regexp"
"strconv"
)
const (
inputVersionRegexString = `^.*-v(?P<Major>[0-9]+)\.(?P<Minor>[0-9]+)\.(?P<Patch>[0-9]+)$`
minimumVersionRegexString = `^(?P<Major>[0-9]+)\.(?P<Minor>[0-9])+\.(?P<Patch>[0-9]+)$`
)
func extractVersionAndCompare(input, requiredMin string) (bool, error) {
inputRegexp := regexp.MustCompile(inputVersionRegexString)
minimumRegexp := regexp.MustCompile(minimumVersionRegexString)
if ok := inputRegexp.MatchString(input); !ok {
return false, fmt.Errorf("unexpected input version tag: %s", input)
}
if ok := minimumRegexp.MatchString(requiredMin); !ok {
return false, fmt.Errorf("unexpected threshold version tag: %s", requiredMin)
}
inputMatches := inputRegexp.FindAllStringSubmatch(input, 4)
inputMajor, _ := strconv.Atoi(inputMatches[0][1])
inputMinor, _ := strconv.Atoi(inputMatches[0][2])
inputPatch, _ := strconv.Atoi(inputMatches[0][3])
minimumMatches := minimumRegexp.FindAllStringSubmatch(requiredMin, 4)
minimumMajor, _ := strconv.Atoi(minimumMatches[0][1])
minimumMinor, _ := strconv.Atoi(minimumMatches[0][2])
minimumPatch, _ := strconv.Atoi(minimumMatches[0][3])
return compareSemver(inputMajor, inputMinor, inputPatch, minimumMajor, minimumMinor, minimumPatch), nil
}
func compareSemver(iMaj, iMin, iPat, rMaj, rMin, rPat int) bool {
if iMaj > rMaj {
return true
}
if iMaj < rMaj {
return false
}
if iMin > rMin {
return true
}
if iMin < rMin {
return false
}
if iPat > rPat {
return true
}
if iPat < rPat {
return false
}
return true
}
|