mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-10-31 18:28:13 +00:00 
			
		
		
		
	bump k8s.io/system-validators to v1.7.0
- add blkio as an optionally required cgroup - update blang/semver to v4 - bump the min go version to 1.16
This commit is contained in:
		
							
								
								
									
										26
									
								
								LICENSES/vendor/github.com/blang/semver/v4/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								LICENSES/vendor/github.com/blang/semver/v4/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| = vendor/github.com/blang/semver/v4 licensed under: = | ||||
|  | ||||
| The MIT License | ||||
|  | ||||
| Copyright (c) 2014 Benedikt Lang <github at benediktlang.de> | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in | ||||
| all copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| THE SOFTWARE. | ||||
|  | ||||
|  | ||||
| = vendor/github.com/blang/semver/LICENSE 5a3ade42a900439691ebc22013660cae | ||||
							
								
								
									
										5
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								go.mod
									
									
									
									
									
								
							| @@ -132,7 +132,7 @@ require ( | ||||
| 	k8s.io/mount-utils v0.0.0 | ||||
| 	k8s.io/pod-security-admission v0.0.0 | ||||
| 	k8s.io/sample-apiserver v0.0.0 | ||||
| 	k8s.io/system-validators v1.6.0 | ||||
| 	k8s.io/system-validators v1.7.0 | ||||
| 	k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 | ||||
| 	sigs.k8s.io/structured-merge-diff/v4 v4.2.1 | ||||
| 	sigs.k8s.io/yaml v1.2.0 | ||||
| @@ -179,6 +179,7 @@ replace ( | ||||
| 	github.com/beorn7/perks => github.com/beorn7/perks v1.0.1 | ||||
| 	github.com/bits-and-blooms/bitset => github.com/bits-and-blooms/bitset v1.2.0 | ||||
| 	github.com/blang/semver => github.com/blang/semver v3.5.1+incompatible | ||||
| 	github.com/blang/semver/v4 => github.com/blang/semver/v4 v4.0.0 | ||||
| 	github.com/boltdb/bolt => github.com/boltdb/bolt v1.3.1 | ||||
| 	github.com/census-instrumentation/opencensus-proto => github.com/census-instrumentation/opencensus-proto v0.2.1 | ||||
| 	github.com/certifi/gocertifi => github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054 | ||||
| @@ -473,7 +474,7 @@ replace ( | ||||
| 	k8s.io/sample-apiserver => ./staging/src/k8s.io/sample-apiserver | ||||
| 	k8s.io/sample-cli-plugin => ./staging/src/k8s.io/sample-cli-plugin | ||||
| 	k8s.io/sample-controller => ./staging/src/k8s.io/sample-controller | ||||
| 	k8s.io/system-validators => k8s.io/system-validators v1.6.0 | ||||
| 	k8s.io/system-validators => k8s.io/system-validators v1.7.0 | ||||
| 	k8s.io/utils => k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 | ||||
| 	modernc.org/cc => modernc.org/cc v1.0.0 | ||||
| 	modernc.org/golex => modernc.org/golex v1.0.0 | ||||
|   | ||||
							
								
								
									
										6
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								go.sum
									
									
									
									
									
								
							| @@ -70,6 +70,8 @@ github.com/bits-and-blooms/bitset v1.2.0 h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjL | ||||
| github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= | ||||
| github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= | ||||
| github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= | ||||
| github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= | ||||
| github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= | ||||
| github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= | ||||
| github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= | ||||
| github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= | ||||
| @@ -547,8 +549,8 @@ k8s.io/klog/v2 v2.60.1 h1:VW25q3bZx9uE3vvdL6M8ezOX79vA2Aq1nEWLqNQclHc= | ||||
| k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= | ||||
| k8s.io/kube-openapi v0.0.0-20220323210520-29d726468e05 h1:HC/IqdsYa2juhSDWUEO/MGxGcyUMSMX+aynZ5WcJZeg= | ||||
| k8s.io/kube-openapi v0.0.0-20220323210520-29d726468e05/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= | ||||
| k8s.io/system-validators v1.6.0 h1:21qaPNdZ+mQrm4qc5shU0T5Eh49t/miFqZsn4sW8Hr0= | ||||
| k8s.io/system-validators v1.6.0/go.mod h1:bPldcLgkIUK22ALflnsXk8pvkTEndYdNuaHH6gRrl0Q= | ||||
| k8s.io/system-validators v1.7.0 h1:tYD3hojdYc58CKtiEsh7BWW6Pg0x6xbclUiwjaIiiYo= | ||||
| k8s.io/system-validators v1.7.0/go.mod h1:gP1Ky+R9wtrSiFbrpEPwWMeYz9yqyy1S/KOh0Vci7WI= | ||||
| k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= | ||||
| k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= | ||||
| modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= | ||||
|   | ||||
							
								
								
									
										22
									
								
								vendor/github.com/blang/semver/v4/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/blang/semver/v4/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| The MIT License | ||||
|  | ||||
| Copyright (c) 2014 Benedikt Lang <github at benediktlang.de> | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in | ||||
| all copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| THE SOFTWARE. | ||||
|  | ||||
							
								
								
									
										3
									
								
								vendor/github.com/blang/semver/v4/go.mod
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/blang/semver/v4/go.mod
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| module github.com/blang/semver/v4 | ||||
|  | ||||
| go 1.14 | ||||
							
								
								
									
										23
									
								
								vendor/github.com/blang/semver/v4/json.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								vendor/github.com/blang/semver/v4/json.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| package semver | ||||
|  | ||||
| import ( | ||||
| 	"encoding/json" | ||||
| ) | ||||
|  | ||||
| // MarshalJSON implements the encoding/json.Marshaler interface. | ||||
| func (v Version) MarshalJSON() ([]byte, error) { | ||||
| 	return json.Marshal(v.String()) | ||||
| } | ||||
|  | ||||
| // UnmarshalJSON implements the encoding/json.Unmarshaler interface. | ||||
| func (v *Version) UnmarshalJSON(data []byte) (err error) { | ||||
| 	var versionString string | ||||
|  | ||||
| 	if err = json.Unmarshal(data, &versionString); err != nil { | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	*v, err = Parse(versionString) | ||||
|  | ||||
| 	return | ||||
| } | ||||
							
								
								
									
										416
									
								
								vendor/github.com/blang/semver/v4/range.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										416
									
								
								vendor/github.com/blang/semver/v4/range.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,416 @@ | ||||
| package semver | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"strconv" | ||||
| 	"strings" | ||||
| 	"unicode" | ||||
| ) | ||||
|  | ||||
| type wildcardType int | ||||
|  | ||||
| const ( | ||||
| 	noneWildcard  wildcardType = iota | ||||
| 	majorWildcard wildcardType = 1 | ||||
| 	minorWildcard wildcardType = 2 | ||||
| 	patchWildcard wildcardType = 3 | ||||
| ) | ||||
|  | ||||
| func wildcardTypefromInt(i int) wildcardType { | ||||
| 	switch i { | ||||
| 	case 1: | ||||
| 		return majorWildcard | ||||
| 	case 2: | ||||
| 		return minorWildcard | ||||
| 	case 3: | ||||
| 		return patchWildcard | ||||
| 	default: | ||||
| 		return noneWildcard | ||||
| 	} | ||||
| } | ||||
|  | ||||
| type comparator func(Version, Version) bool | ||||
|  | ||||
| var ( | ||||
| 	compEQ comparator = func(v1 Version, v2 Version) bool { | ||||
| 		return v1.Compare(v2) == 0 | ||||
| 	} | ||||
| 	compNE = func(v1 Version, v2 Version) bool { | ||||
| 		return v1.Compare(v2) != 0 | ||||
| 	} | ||||
| 	compGT = func(v1 Version, v2 Version) bool { | ||||
| 		return v1.Compare(v2) == 1 | ||||
| 	} | ||||
| 	compGE = func(v1 Version, v2 Version) bool { | ||||
| 		return v1.Compare(v2) >= 0 | ||||
| 	} | ||||
| 	compLT = func(v1 Version, v2 Version) bool { | ||||
| 		return v1.Compare(v2) == -1 | ||||
| 	} | ||||
| 	compLE = func(v1 Version, v2 Version) bool { | ||||
| 		return v1.Compare(v2) <= 0 | ||||
| 	} | ||||
| ) | ||||
|  | ||||
| type versionRange struct { | ||||
| 	v Version | ||||
| 	c comparator | ||||
| } | ||||
|  | ||||
| // rangeFunc creates a Range from the given versionRange. | ||||
| func (vr *versionRange) rangeFunc() Range { | ||||
| 	return Range(func(v Version) bool { | ||||
| 		return vr.c(v, vr.v) | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| // Range represents a range of versions. | ||||
| // A Range can be used to check if a Version satisfies it: | ||||
| // | ||||
| //     range, err := semver.ParseRange(">1.0.0 <2.0.0") | ||||
| //     range(semver.MustParse("1.1.1") // returns true | ||||
| type Range func(Version) bool | ||||
|  | ||||
| // OR combines the existing Range with another Range using logical OR. | ||||
| func (rf Range) OR(f Range) Range { | ||||
| 	return Range(func(v Version) bool { | ||||
| 		return rf(v) || f(v) | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| // AND combines the existing Range with another Range using logical AND. | ||||
| func (rf Range) AND(f Range) Range { | ||||
| 	return Range(func(v Version) bool { | ||||
| 		return rf(v) && f(v) | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| // ParseRange parses a range and returns a Range. | ||||
| // If the range could not be parsed an error is returned. | ||||
| // | ||||
| // Valid ranges are: | ||||
| //   - "<1.0.0" | ||||
| //   - "<=1.0.0" | ||||
| //   - ">1.0.0" | ||||
| //   - ">=1.0.0" | ||||
| //   - "1.0.0", "=1.0.0", "==1.0.0" | ||||
| //   - "!1.0.0", "!=1.0.0" | ||||
| // | ||||
| // A Range can consist of multiple ranges separated by space: | ||||
| // Ranges can be linked by logical AND: | ||||
| //   - ">1.0.0 <2.0.0" would match between both ranges, so "1.1.1" and "1.8.7" but not "1.0.0" or "2.0.0" | ||||
| //   - ">1.0.0 <3.0.0 !2.0.3-beta.2" would match every version between 1.0.0 and 3.0.0 except 2.0.3-beta.2 | ||||
| // | ||||
| // Ranges can also be linked by logical OR: | ||||
| //   - "<2.0.0 || >=3.0.0" would match "1.x.x" and "3.x.x" but not "2.x.x" | ||||
| // | ||||
| // AND has a higher precedence than OR. It's not possible to use brackets. | ||||
| // | ||||
| // Ranges can be combined by both AND and OR | ||||
| // | ||||
| //  - `>1.0.0 <2.0.0 || >3.0.0 !4.2.1` would match `1.2.3`, `1.9.9`, `3.1.1`, but not `4.2.1`, `2.1.1` | ||||
| func ParseRange(s string) (Range, error) { | ||||
| 	parts := splitAndTrim(s) | ||||
| 	orParts, err := splitORParts(parts) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	expandedParts, err := expandWildcardVersion(orParts) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	var orFn Range | ||||
| 	for _, p := range expandedParts { | ||||
| 		var andFn Range | ||||
| 		for _, ap := range p { | ||||
| 			opStr, vStr, err := splitComparatorVersion(ap) | ||||
| 			if err != nil { | ||||
| 				return nil, err | ||||
| 			} | ||||
| 			vr, err := buildVersionRange(opStr, vStr) | ||||
| 			if err != nil { | ||||
| 				return nil, fmt.Errorf("Could not parse Range %q: %s", ap, err) | ||||
| 			} | ||||
| 			rf := vr.rangeFunc() | ||||
|  | ||||
| 			// Set function | ||||
| 			if andFn == nil { | ||||
| 				andFn = rf | ||||
| 			} else { // Combine with existing function | ||||
| 				andFn = andFn.AND(rf) | ||||
| 			} | ||||
| 		} | ||||
| 		if orFn == nil { | ||||
| 			orFn = andFn | ||||
| 		} else { | ||||
| 			orFn = orFn.OR(andFn) | ||||
| 		} | ||||
|  | ||||
| 	} | ||||
| 	return orFn, nil | ||||
| } | ||||
|  | ||||
| // splitORParts splits the already cleaned parts by '||'. | ||||
| // Checks for invalid positions of the operator and returns an | ||||
| // error if found. | ||||
| func splitORParts(parts []string) ([][]string, error) { | ||||
| 	var ORparts [][]string | ||||
| 	last := 0 | ||||
| 	for i, p := range parts { | ||||
| 		if p == "||" { | ||||
| 			if i == 0 { | ||||
| 				return nil, fmt.Errorf("First element in range is '||'") | ||||
| 			} | ||||
| 			ORparts = append(ORparts, parts[last:i]) | ||||
| 			last = i + 1 | ||||
| 		} | ||||
| 	} | ||||
| 	if last == len(parts) { | ||||
| 		return nil, fmt.Errorf("Last element in range is '||'") | ||||
| 	} | ||||
| 	ORparts = append(ORparts, parts[last:]) | ||||
| 	return ORparts, nil | ||||
| } | ||||
|  | ||||
| // buildVersionRange takes a slice of 2: operator and version | ||||
| // and builds a versionRange, otherwise an error. | ||||
| func buildVersionRange(opStr, vStr string) (*versionRange, error) { | ||||
| 	c := parseComparator(opStr) | ||||
| 	if c == nil { | ||||
| 		return nil, fmt.Errorf("Could not parse comparator %q in %q", opStr, strings.Join([]string{opStr, vStr}, "")) | ||||
| 	} | ||||
| 	v, err := Parse(vStr) | ||||
| 	if err != nil { | ||||
| 		return nil, fmt.Errorf("Could not parse version %q in %q: %s", vStr, strings.Join([]string{opStr, vStr}, ""), err) | ||||
| 	} | ||||
|  | ||||
| 	return &versionRange{ | ||||
| 		v: v, | ||||
| 		c: c, | ||||
| 	}, nil | ||||
|  | ||||
| } | ||||
|  | ||||
| // inArray checks if a byte is contained in an array of bytes | ||||
| func inArray(s byte, list []byte) bool { | ||||
| 	for _, el := range list { | ||||
| 		if el == s { | ||||
| 			return true | ||||
| 		} | ||||
| 	} | ||||
| 	return false | ||||
| } | ||||
|  | ||||
| // splitAndTrim splits a range string by spaces and cleans whitespaces | ||||
| func splitAndTrim(s string) (result []string) { | ||||
| 	last := 0 | ||||
| 	var lastChar byte | ||||
| 	excludeFromSplit := []byte{'>', '<', '='} | ||||
| 	for i := 0; i < len(s); i++ { | ||||
| 		if s[i] == ' ' && !inArray(lastChar, excludeFromSplit) { | ||||
| 			if last < i-1 { | ||||
| 				result = append(result, s[last:i]) | ||||
| 			} | ||||
| 			last = i + 1 | ||||
| 		} else if s[i] != ' ' { | ||||
| 			lastChar = s[i] | ||||
| 		} | ||||
| 	} | ||||
| 	if last < len(s)-1 { | ||||
| 		result = append(result, s[last:]) | ||||
| 	} | ||||
|  | ||||
| 	for i, v := range result { | ||||
| 		result[i] = strings.Replace(v, " ", "", -1) | ||||
| 	} | ||||
|  | ||||
| 	// parts := strings.Split(s, " ") | ||||
| 	// for _, x := range parts { | ||||
| 	// 	if s := strings.TrimSpace(x); len(s) != 0 { | ||||
| 	// 		result = append(result, s) | ||||
| 	// 	} | ||||
| 	// } | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // splitComparatorVersion splits the comparator from the version. | ||||
| // Input must be free of leading or trailing spaces. | ||||
| func splitComparatorVersion(s string) (string, string, error) { | ||||
| 	i := strings.IndexFunc(s, unicode.IsDigit) | ||||
| 	if i == -1 { | ||||
| 		return "", "", fmt.Errorf("Could not get version from string: %q", s) | ||||
| 	} | ||||
| 	return strings.TrimSpace(s[0:i]), s[i:], nil | ||||
| } | ||||
|  | ||||
| // getWildcardType will return the type of wildcard that the | ||||
| // passed version contains | ||||
| func getWildcardType(vStr string) wildcardType { | ||||
| 	parts := strings.Split(vStr, ".") | ||||
| 	nparts := len(parts) | ||||
| 	wildcard := parts[nparts-1] | ||||
|  | ||||
| 	possibleWildcardType := wildcardTypefromInt(nparts) | ||||
| 	if wildcard == "x" { | ||||
| 		return possibleWildcardType | ||||
| 	} | ||||
|  | ||||
| 	return noneWildcard | ||||
| } | ||||
|  | ||||
| // createVersionFromWildcard will convert a wildcard version | ||||
| // into a regular version, replacing 'x's with '0's, handling | ||||
| // special cases like '1.x.x' and '1.x' | ||||
| func createVersionFromWildcard(vStr string) string { | ||||
| 	// handle 1.x.x | ||||
| 	vStr2 := strings.Replace(vStr, ".x.x", ".x", 1) | ||||
| 	vStr2 = strings.Replace(vStr2, ".x", ".0", 1) | ||||
| 	parts := strings.Split(vStr2, ".") | ||||
|  | ||||
| 	// handle 1.x | ||||
| 	if len(parts) == 2 { | ||||
| 		return vStr2 + ".0" | ||||
| 	} | ||||
|  | ||||
| 	return vStr2 | ||||
| } | ||||
|  | ||||
| // incrementMajorVersion will increment the major version | ||||
| // of the passed version | ||||
| func incrementMajorVersion(vStr string) (string, error) { | ||||
| 	parts := strings.Split(vStr, ".") | ||||
| 	i, err := strconv.Atoi(parts[0]) | ||||
| 	if err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	parts[0] = strconv.Itoa(i + 1) | ||||
|  | ||||
| 	return strings.Join(parts, "."), nil | ||||
| } | ||||
|  | ||||
| // incrementMajorVersion will increment the minor version | ||||
| // of the passed version | ||||
| func incrementMinorVersion(vStr string) (string, error) { | ||||
| 	parts := strings.Split(vStr, ".") | ||||
| 	i, err := strconv.Atoi(parts[1]) | ||||
| 	if err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	parts[1] = strconv.Itoa(i + 1) | ||||
|  | ||||
| 	return strings.Join(parts, "."), nil | ||||
| } | ||||
|  | ||||
| // expandWildcardVersion will expand wildcards inside versions | ||||
| // following these rules: | ||||
| // | ||||
| // * when dealing with patch wildcards: | ||||
| // >= 1.2.x    will become    >= 1.2.0 | ||||
| // <= 1.2.x    will become    <  1.3.0 | ||||
| // >  1.2.x    will become    >= 1.3.0 | ||||
| // <  1.2.x    will become    <  1.2.0 | ||||
| // != 1.2.x    will become    <  1.2.0 >= 1.3.0 | ||||
| // | ||||
| // * when dealing with minor wildcards: | ||||
| // >= 1.x      will become    >= 1.0.0 | ||||
| // <= 1.x      will become    <  2.0.0 | ||||
| // >  1.x      will become    >= 2.0.0 | ||||
| // <  1.0      will become    <  1.0.0 | ||||
| // != 1.x      will become    <  1.0.0 >= 2.0.0 | ||||
| // | ||||
| // * when dealing with wildcards without | ||||
| // version operator: | ||||
| // 1.2.x       will become    >= 1.2.0 < 1.3.0 | ||||
| // 1.x         will become    >= 1.0.0 < 2.0.0 | ||||
| func expandWildcardVersion(parts [][]string) ([][]string, error) { | ||||
| 	var expandedParts [][]string | ||||
| 	for _, p := range parts { | ||||
| 		var newParts []string | ||||
| 		for _, ap := range p { | ||||
| 			if strings.Contains(ap, "x") { | ||||
| 				opStr, vStr, err := splitComparatorVersion(ap) | ||||
| 				if err != nil { | ||||
| 					return nil, err | ||||
| 				} | ||||
|  | ||||
| 				versionWildcardType := getWildcardType(vStr) | ||||
| 				flatVersion := createVersionFromWildcard(vStr) | ||||
|  | ||||
| 				var resultOperator string | ||||
| 				var shouldIncrementVersion bool | ||||
| 				switch opStr { | ||||
| 				case ">": | ||||
| 					resultOperator = ">=" | ||||
| 					shouldIncrementVersion = true | ||||
| 				case ">=": | ||||
| 					resultOperator = ">=" | ||||
| 				case "<": | ||||
| 					resultOperator = "<" | ||||
| 				case "<=": | ||||
| 					resultOperator = "<" | ||||
| 					shouldIncrementVersion = true | ||||
| 				case "", "=", "==": | ||||
| 					newParts = append(newParts, ">="+flatVersion) | ||||
| 					resultOperator = "<" | ||||
| 					shouldIncrementVersion = true | ||||
| 				case "!=", "!": | ||||
| 					newParts = append(newParts, "<"+flatVersion) | ||||
| 					resultOperator = ">=" | ||||
| 					shouldIncrementVersion = true | ||||
| 				} | ||||
|  | ||||
| 				var resultVersion string | ||||
| 				if shouldIncrementVersion { | ||||
| 					switch versionWildcardType { | ||||
| 					case patchWildcard: | ||||
| 						resultVersion, _ = incrementMinorVersion(flatVersion) | ||||
| 					case minorWildcard: | ||||
| 						resultVersion, _ = incrementMajorVersion(flatVersion) | ||||
| 					} | ||||
| 				} else { | ||||
| 					resultVersion = flatVersion | ||||
| 				} | ||||
|  | ||||
| 				ap = resultOperator + resultVersion | ||||
| 			} | ||||
| 			newParts = append(newParts, ap) | ||||
| 		} | ||||
| 		expandedParts = append(expandedParts, newParts) | ||||
| 	} | ||||
|  | ||||
| 	return expandedParts, nil | ||||
| } | ||||
|  | ||||
| func parseComparator(s string) comparator { | ||||
| 	switch s { | ||||
| 	case "==": | ||||
| 		fallthrough | ||||
| 	case "": | ||||
| 		fallthrough | ||||
| 	case "=": | ||||
| 		return compEQ | ||||
| 	case ">": | ||||
| 		return compGT | ||||
| 	case ">=": | ||||
| 		return compGE | ||||
| 	case "<": | ||||
| 		return compLT | ||||
| 	case "<=": | ||||
| 		return compLE | ||||
| 	case "!": | ||||
| 		fallthrough | ||||
| 	case "!=": | ||||
| 		return compNE | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // MustParseRange is like ParseRange but panics if the range cannot be parsed. | ||||
| func MustParseRange(s string) Range { | ||||
| 	r, err := ParseRange(s) | ||||
| 	if err != nil { | ||||
| 		panic(`semver: ParseRange(` + s + `): ` + err.Error()) | ||||
| 	} | ||||
| 	return r | ||||
| } | ||||
							
								
								
									
										476
									
								
								vendor/github.com/blang/semver/v4/semver.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										476
									
								
								vendor/github.com/blang/semver/v4/semver.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,476 @@ | ||||
| package semver | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"strconv" | ||||
| 	"strings" | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	numbers  string = "0123456789" | ||||
| 	alphas          = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-" | ||||
| 	alphanum        = alphas + numbers | ||||
| ) | ||||
|  | ||||
| // SpecVersion is the latest fully supported spec version of semver | ||||
| var SpecVersion = Version{ | ||||
| 	Major: 2, | ||||
| 	Minor: 0, | ||||
| 	Patch: 0, | ||||
| } | ||||
|  | ||||
| // Version represents a semver compatible version | ||||
| type Version struct { | ||||
| 	Major uint64 | ||||
| 	Minor uint64 | ||||
| 	Patch uint64 | ||||
| 	Pre   []PRVersion | ||||
| 	Build []string //No Precedence | ||||
| } | ||||
|  | ||||
| // Version to string | ||||
| func (v Version) String() string { | ||||
| 	b := make([]byte, 0, 5) | ||||
| 	b = strconv.AppendUint(b, v.Major, 10) | ||||
| 	b = append(b, '.') | ||||
| 	b = strconv.AppendUint(b, v.Minor, 10) | ||||
| 	b = append(b, '.') | ||||
| 	b = strconv.AppendUint(b, v.Patch, 10) | ||||
|  | ||||
| 	if len(v.Pre) > 0 { | ||||
| 		b = append(b, '-') | ||||
| 		b = append(b, v.Pre[0].String()...) | ||||
|  | ||||
| 		for _, pre := range v.Pre[1:] { | ||||
| 			b = append(b, '.') | ||||
| 			b = append(b, pre.String()...) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if len(v.Build) > 0 { | ||||
| 		b = append(b, '+') | ||||
| 		b = append(b, v.Build[0]...) | ||||
|  | ||||
| 		for _, build := range v.Build[1:] { | ||||
| 			b = append(b, '.') | ||||
| 			b = append(b, build...) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return string(b) | ||||
| } | ||||
|  | ||||
| // FinalizeVersion discards prerelease and build number and only returns | ||||
| // major, minor and patch number. | ||||
| func (v Version) FinalizeVersion() string { | ||||
| 	b := make([]byte, 0, 5) | ||||
| 	b = strconv.AppendUint(b, v.Major, 10) | ||||
| 	b = append(b, '.') | ||||
| 	b = strconv.AppendUint(b, v.Minor, 10) | ||||
| 	b = append(b, '.') | ||||
| 	b = strconv.AppendUint(b, v.Patch, 10) | ||||
| 	return string(b) | ||||
| } | ||||
|  | ||||
| // Equals checks if v is equal to o. | ||||
| func (v Version) Equals(o Version) bool { | ||||
| 	return (v.Compare(o) == 0) | ||||
| } | ||||
|  | ||||
| // EQ checks if v is equal to o. | ||||
| func (v Version) EQ(o Version) bool { | ||||
| 	return (v.Compare(o) == 0) | ||||
| } | ||||
|  | ||||
| // NE checks if v is not equal to o. | ||||
| func (v Version) NE(o Version) bool { | ||||
| 	return (v.Compare(o) != 0) | ||||
| } | ||||
|  | ||||
| // GT checks if v is greater than o. | ||||
| func (v Version) GT(o Version) bool { | ||||
| 	return (v.Compare(o) == 1) | ||||
| } | ||||
|  | ||||
| // GTE checks if v is greater than or equal to o. | ||||
| func (v Version) GTE(o Version) bool { | ||||
| 	return (v.Compare(o) >= 0) | ||||
| } | ||||
|  | ||||
| // GE checks if v is greater than or equal to o. | ||||
| func (v Version) GE(o Version) bool { | ||||
| 	return (v.Compare(o) >= 0) | ||||
| } | ||||
|  | ||||
| // LT checks if v is less than o. | ||||
| func (v Version) LT(o Version) bool { | ||||
| 	return (v.Compare(o) == -1) | ||||
| } | ||||
|  | ||||
| // LTE checks if v is less than or equal to o. | ||||
| func (v Version) LTE(o Version) bool { | ||||
| 	return (v.Compare(o) <= 0) | ||||
| } | ||||
|  | ||||
| // LE checks if v is less than or equal to o. | ||||
| func (v Version) LE(o Version) bool { | ||||
| 	return (v.Compare(o) <= 0) | ||||
| } | ||||
|  | ||||
| // Compare compares Versions v to o: | ||||
| // -1 == v is less than o | ||||
| // 0 == v is equal to o | ||||
| // 1 == v is greater than o | ||||
| func (v Version) Compare(o Version) int { | ||||
| 	if v.Major != o.Major { | ||||
| 		if v.Major > o.Major { | ||||
| 			return 1 | ||||
| 		} | ||||
| 		return -1 | ||||
| 	} | ||||
| 	if v.Minor != o.Minor { | ||||
| 		if v.Minor > o.Minor { | ||||
| 			return 1 | ||||
| 		} | ||||
| 		return -1 | ||||
| 	} | ||||
| 	if v.Patch != o.Patch { | ||||
| 		if v.Patch > o.Patch { | ||||
| 			return 1 | ||||
| 		} | ||||
| 		return -1 | ||||
| 	} | ||||
|  | ||||
| 	// Quick comparison if a version has no prerelease versions | ||||
| 	if len(v.Pre) == 0 && len(o.Pre) == 0 { | ||||
| 		return 0 | ||||
| 	} else if len(v.Pre) == 0 && len(o.Pre) > 0 { | ||||
| 		return 1 | ||||
| 	} else if len(v.Pre) > 0 && len(o.Pre) == 0 { | ||||
| 		return -1 | ||||
| 	} | ||||
|  | ||||
| 	i := 0 | ||||
| 	for ; i < len(v.Pre) && i < len(o.Pre); i++ { | ||||
| 		if comp := v.Pre[i].Compare(o.Pre[i]); comp == 0 { | ||||
| 			continue | ||||
| 		} else if comp == 1 { | ||||
| 			return 1 | ||||
| 		} else { | ||||
| 			return -1 | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// If all pr versions are the equal but one has further prversion, this one greater | ||||
| 	if i == len(v.Pre) && i == len(o.Pre) { | ||||
| 		return 0 | ||||
| 	} else if i == len(v.Pre) && i < len(o.Pre) { | ||||
| 		return -1 | ||||
| 	} else { | ||||
| 		return 1 | ||||
| 	} | ||||
|  | ||||
| } | ||||
|  | ||||
| // IncrementPatch increments the patch version | ||||
| func (v *Version) IncrementPatch() error { | ||||
| 	v.Patch++ | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // IncrementMinor increments the minor version | ||||
| func (v *Version) IncrementMinor() error { | ||||
| 	v.Minor++ | ||||
| 	v.Patch = 0 | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // IncrementMajor increments the major version | ||||
| func (v *Version) IncrementMajor() error { | ||||
| 	v.Major++ | ||||
| 	v.Minor = 0 | ||||
| 	v.Patch = 0 | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // Validate validates v and returns error in case | ||||
| func (v Version) Validate() error { | ||||
| 	// Major, Minor, Patch already validated using uint64 | ||||
|  | ||||
| 	for _, pre := range v.Pre { | ||||
| 		if !pre.IsNum { //Numeric prerelease versions already uint64 | ||||
| 			if len(pre.VersionStr) == 0 { | ||||
| 				return fmt.Errorf("Prerelease can not be empty %q", pre.VersionStr) | ||||
| 			} | ||||
| 			if !containsOnly(pre.VersionStr, alphanum) { | ||||
| 				return fmt.Errorf("Invalid character(s) found in prerelease %q", pre.VersionStr) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	for _, build := range v.Build { | ||||
| 		if len(build) == 0 { | ||||
| 			return fmt.Errorf("Build meta data can not be empty %q", build) | ||||
| 		} | ||||
| 		if !containsOnly(build, alphanum) { | ||||
| 			return fmt.Errorf("Invalid character(s) found in build meta data %q", build) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // New is an alias for Parse and returns a pointer, parses version string and returns a validated Version or error | ||||
| func New(s string) (*Version, error) { | ||||
| 	v, err := Parse(s) | ||||
| 	vp := &v | ||||
| 	return vp, err | ||||
| } | ||||
|  | ||||
| // Make is an alias for Parse, parses version string and returns a validated Version or error | ||||
| func Make(s string) (Version, error) { | ||||
| 	return Parse(s) | ||||
| } | ||||
|  | ||||
| // ParseTolerant allows for certain version specifications that do not strictly adhere to semver | ||||
| // specs to be parsed by this library. It does so by normalizing versions before passing them to | ||||
| // Parse(). It currently trims spaces, removes a "v" prefix, adds a 0 patch number to versions | ||||
| // with only major and minor components specified, and removes leading 0s. | ||||
| func ParseTolerant(s string) (Version, error) { | ||||
| 	s = strings.TrimSpace(s) | ||||
| 	s = strings.TrimPrefix(s, "v") | ||||
|  | ||||
| 	// Split into major.minor.(patch+pr+meta) | ||||
| 	parts := strings.SplitN(s, ".", 3) | ||||
| 	// Remove leading zeros. | ||||
| 	for i, p := range parts { | ||||
| 		if len(p) > 1 { | ||||
| 			p = strings.TrimLeft(p, "0") | ||||
| 			if len(p) == 0 || !strings.ContainsAny(p[0:1], "0123456789") { | ||||
| 				p = "0" + p | ||||
| 			} | ||||
| 			parts[i] = p | ||||
| 		} | ||||
| 	} | ||||
| 	// Fill up shortened versions. | ||||
| 	if len(parts) < 3 { | ||||
| 		if strings.ContainsAny(parts[len(parts)-1], "+-") { | ||||
| 			return Version{}, errors.New("Short version cannot contain PreRelease/Build meta data") | ||||
| 		} | ||||
| 		for len(parts) < 3 { | ||||
| 			parts = append(parts, "0") | ||||
| 		} | ||||
| 	} | ||||
| 	s = strings.Join(parts, ".") | ||||
|  | ||||
| 	return Parse(s) | ||||
| } | ||||
|  | ||||
| // Parse parses version string and returns a validated Version or error | ||||
| func Parse(s string) (Version, error) { | ||||
| 	if len(s) == 0 { | ||||
| 		return Version{}, errors.New("Version string empty") | ||||
| 	} | ||||
|  | ||||
| 	// Split into major.minor.(patch+pr+meta) | ||||
| 	parts := strings.SplitN(s, ".", 3) | ||||
| 	if len(parts) != 3 { | ||||
| 		return Version{}, errors.New("No Major.Minor.Patch elements found") | ||||
| 	} | ||||
|  | ||||
| 	// Major | ||||
| 	if !containsOnly(parts[0], numbers) { | ||||
| 		return Version{}, fmt.Errorf("Invalid character(s) found in major number %q", parts[0]) | ||||
| 	} | ||||
| 	if hasLeadingZeroes(parts[0]) { | ||||
| 		return Version{}, fmt.Errorf("Major number must not contain leading zeroes %q", parts[0]) | ||||
| 	} | ||||
| 	major, err := strconv.ParseUint(parts[0], 10, 64) | ||||
| 	if err != nil { | ||||
| 		return Version{}, err | ||||
| 	} | ||||
|  | ||||
| 	// Minor | ||||
| 	if !containsOnly(parts[1], numbers) { | ||||
| 		return Version{}, fmt.Errorf("Invalid character(s) found in minor number %q", parts[1]) | ||||
| 	} | ||||
| 	if hasLeadingZeroes(parts[1]) { | ||||
| 		return Version{}, fmt.Errorf("Minor number must not contain leading zeroes %q", parts[1]) | ||||
| 	} | ||||
| 	minor, err := strconv.ParseUint(parts[1], 10, 64) | ||||
| 	if err != nil { | ||||
| 		return Version{}, err | ||||
| 	} | ||||
|  | ||||
| 	v := Version{} | ||||
| 	v.Major = major | ||||
| 	v.Minor = minor | ||||
|  | ||||
| 	var build, prerelease []string | ||||
| 	patchStr := parts[2] | ||||
|  | ||||
| 	if buildIndex := strings.IndexRune(patchStr, '+'); buildIndex != -1 { | ||||
| 		build = strings.Split(patchStr[buildIndex+1:], ".") | ||||
| 		patchStr = patchStr[:buildIndex] | ||||
| 	} | ||||
|  | ||||
| 	if preIndex := strings.IndexRune(patchStr, '-'); preIndex != -1 { | ||||
| 		prerelease = strings.Split(patchStr[preIndex+1:], ".") | ||||
| 		patchStr = patchStr[:preIndex] | ||||
| 	} | ||||
|  | ||||
| 	if !containsOnly(patchStr, numbers) { | ||||
| 		return Version{}, fmt.Errorf("Invalid character(s) found in patch number %q", patchStr) | ||||
| 	} | ||||
| 	if hasLeadingZeroes(patchStr) { | ||||
| 		return Version{}, fmt.Errorf("Patch number must not contain leading zeroes %q", patchStr) | ||||
| 	} | ||||
| 	patch, err := strconv.ParseUint(patchStr, 10, 64) | ||||
| 	if err != nil { | ||||
| 		return Version{}, err | ||||
| 	} | ||||
|  | ||||
| 	v.Patch = patch | ||||
|  | ||||
| 	// Prerelease | ||||
| 	for _, prstr := range prerelease { | ||||
| 		parsedPR, err := NewPRVersion(prstr) | ||||
| 		if err != nil { | ||||
| 			return Version{}, err | ||||
| 		} | ||||
| 		v.Pre = append(v.Pre, parsedPR) | ||||
| 	} | ||||
|  | ||||
| 	// Build meta data | ||||
| 	for _, str := range build { | ||||
| 		if len(str) == 0 { | ||||
| 			return Version{}, errors.New("Build meta data is empty") | ||||
| 		} | ||||
| 		if !containsOnly(str, alphanum) { | ||||
| 			return Version{}, fmt.Errorf("Invalid character(s) found in build meta data %q", str) | ||||
| 		} | ||||
| 		v.Build = append(v.Build, str) | ||||
| 	} | ||||
|  | ||||
| 	return v, nil | ||||
| } | ||||
|  | ||||
| // MustParse is like Parse but panics if the version cannot be parsed. | ||||
| func MustParse(s string) Version { | ||||
| 	v, err := Parse(s) | ||||
| 	if err != nil { | ||||
| 		panic(`semver: Parse(` + s + `): ` + err.Error()) | ||||
| 	} | ||||
| 	return v | ||||
| } | ||||
|  | ||||
| // PRVersion represents a PreRelease Version | ||||
| type PRVersion struct { | ||||
| 	VersionStr string | ||||
| 	VersionNum uint64 | ||||
| 	IsNum      bool | ||||
| } | ||||
|  | ||||
| // NewPRVersion creates a new valid prerelease version | ||||
| func NewPRVersion(s string) (PRVersion, error) { | ||||
| 	if len(s) == 0 { | ||||
| 		return PRVersion{}, errors.New("Prerelease is empty") | ||||
| 	} | ||||
| 	v := PRVersion{} | ||||
| 	if containsOnly(s, numbers) { | ||||
| 		if hasLeadingZeroes(s) { | ||||
| 			return PRVersion{}, fmt.Errorf("Numeric PreRelease version must not contain leading zeroes %q", s) | ||||
| 		} | ||||
| 		num, err := strconv.ParseUint(s, 10, 64) | ||||
|  | ||||
| 		// Might never be hit, but just in case | ||||
| 		if err != nil { | ||||
| 			return PRVersion{}, err | ||||
| 		} | ||||
| 		v.VersionNum = num | ||||
| 		v.IsNum = true | ||||
| 	} else if containsOnly(s, alphanum) { | ||||
| 		v.VersionStr = s | ||||
| 		v.IsNum = false | ||||
| 	} else { | ||||
| 		return PRVersion{}, fmt.Errorf("Invalid character(s) found in prerelease %q", s) | ||||
| 	} | ||||
| 	return v, nil | ||||
| } | ||||
|  | ||||
| // IsNumeric checks if prerelease-version is numeric | ||||
| func (v PRVersion) IsNumeric() bool { | ||||
| 	return v.IsNum | ||||
| } | ||||
|  | ||||
| // Compare compares two PreRelease Versions v and o: | ||||
| // -1 == v is less than o | ||||
| // 0 == v is equal to o | ||||
| // 1 == v is greater than o | ||||
| func (v PRVersion) Compare(o PRVersion) int { | ||||
| 	if v.IsNum && !o.IsNum { | ||||
| 		return -1 | ||||
| 	} else if !v.IsNum && o.IsNum { | ||||
| 		return 1 | ||||
| 	} else if v.IsNum && o.IsNum { | ||||
| 		if v.VersionNum == o.VersionNum { | ||||
| 			return 0 | ||||
| 		} else if v.VersionNum > o.VersionNum { | ||||
| 			return 1 | ||||
| 		} else { | ||||
| 			return -1 | ||||
| 		} | ||||
| 	} else { // both are Alphas | ||||
| 		if v.VersionStr == o.VersionStr { | ||||
| 			return 0 | ||||
| 		} else if v.VersionStr > o.VersionStr { | ||||
| 			return 1 | ||||
| 		} else { | ||||
| 			return -1 | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // PreRelease version to string | ||||
| func (v PRVersion) String() string { | ||||
| 	if v.IsNum { | ||||
| 		return strconv.FormatUint(v.VersionNum, 10) | ||||
| 	} | ||||
| 	return v.VersionStr | ||||
| } | ||||
|  | ||||
| func containsOnly(s string, set string) bool { | ||||
| 	return strings.IndexFunc(s, func(r rune) bool { | ||||
| 		return !strings.ContainsRune(set, r) | ||||
| 	}) == -1 | ||||
| } | ||||
|  | ||||
| func hasLeadingZeroes(s string) bool { | ||||
| 	return len(s) > 1 && s[0] == '0' | ||||
| } | ||||
|  | ||||
| // NewBuildVersion creates a new valid build version | ||||
| func NewBuildVersion(s string) (string, error) { | ||||
| 	if len(s) == 0 { | ||||
| 		return "", errors.New("Buildversion is empty") | ||||
| 	} | ||||
| 	if !containsOnly(s, alphanum) { | ||||
| 		return "", fmt.Errorf("Invalid character(s) found in build meta data %q", s) | ||||
| 	} | ||||
| 	return s, nil | ||||
| } | ||||
|  | ||||
| // FinalizeVersion returns the major, minor and patch number only and discards | ||||
| // prerelease and build number. | ||||
| func FinalizeVersion(s string) (string, error) { | ||||
| 	v, err := Parse(s) | ||||
| 	if err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	v.Pre = nil | ||||
| 	v.Build = nil | ||||
|  | ||||
| 	finalVer := v.String() | ||||
| 	return finalVer, nil | ||||
| } | ||||
							
								
								
									
										28
									
								
								vendor/github.com/blang/semver/v4/sort.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								vendor/github.com/blang/semver/v4/sort.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| package semver | ||||
|  | ||||
| import ( | ||||
| 	"sort" | ||||
| ) | ||||
|  | ||||
| // Versions represents multiple versions. | ||||
| type Versions []Version | ||||
|  | ||||
| // Len returns length of version collection | ||||
| func (s Versions) Len() int { | ||||
| 	return len(s) | ||||
| } | ||||
|  | ||||
| // Swap swaps two versions inside the collection by its indices | ||||
| func (s Versions) Swap(i, j int) { | ||||
| 	s[i], s[j] = s[j], s[i] | ||||
| } | ||||
|  | ||||
| // Less checks if version at index i is less than version at index j | ||||
| func (s Versions) Less(i, j int) bool { | ||||
| 	return s[i].LT(s[j]) | ||||
| } | ||||
|  | ||||
| // Sort sorts a slice of versions | ||||
| func Sort(versions []Version) { | ||||
| 	sort.Sort(Versions(versions)) | ||||
| } | ||||
							
								
								
									
										30
									
								
								vendor/github.com/blang/semver/v4/sql.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								vendor/github.com/blang/semver/v4/sql.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| package semver | ||||
|  | ||||
| import ( | ||||
| 	"database/sql/driver" | ||||
| 	"fmt" | ||||
| ) | ||||
|  | ||||
| // Scan implements the database/sql.Scanner interface. | ||||
| func (v *Version) Scan(src interface{}) (err error) { | ||||
| 	var str string | ||||
| 	switch src := src.(type) { | ||||
| 	case string: | ||||
| 		str = src | ||||
| 	case []byte: | ||||
| 		str = string(src) | ||||
| 	default: | ||||
| 		return fmt.Errorf("version.Scan: cannot convert %T to string", src) | ||||
| 	} | ||||
|  | ||||
| 	if t, err := Parse(str); err == nil { | ||||
| 		*v = t | ||||
| 	} | ||||
|  | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // Value implements the database/sql/driver.Valuer interface. | ||||
| func (v Version) Value() (driver.Value, error) { | ||||
| 	return v.String(), nil | ||||
| } | ||||
							
								
								
									
										1
									
								
								vendor/k8s.io/system-validators/validators/cgroup_validator_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/k8s.io/system-validators/validators/cgroup_validator_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,3 +1,4 @@ | ||||
| //go:build linux | ||||
| // +build linux | ||||
|  | ||||
| /* | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/k8s.io/system-validators/validators/cgroup_validator_other.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/k8s.io/system-validators/validators/cgroup_validator_other.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,3 +1,4 @@ | ||||
| //go:build !linux | ||||
| // +build !linux | ||||
|  | ||||
| /* | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/k8s.io/system-validators/validators/package_validator_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/k8s.io/system-validators/validators/package_validator_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,3 +1,4 @@ | ||||
| //go:build linux | ||||
| // +build linux | ||||
|  | ||||
| /* | ||||
| @@ -24,7 +25,7 @@ import ( | ||||
| 	"os/exec" | ||||
| 	"strings" | ||||
|  | ||||
| 	"github.com/blang/semver" | ||||
| 	"github.com/blang/semver/v4" | ||||
| 	"github.com/pkg/errors" | ||||
| ) | ||||
|  | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/k8s.io/system-validators/validators/package_validator_other.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/k8s.io/system-validators/validators/package_validator_other.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,3 +1,4 @@ | ||||
| //go:build !linux | ||||
| // +build !linux | ||||
|  | ||||
| /* | ||||
|   | ||||
							
								
								
									
										6
									
								
								vendor/k8s.io/system-validators/validators/types_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/k8s.io/system-validators/validators/types_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,3 +1,4 @@ | ||||
| //go:build !windows | ||||
| // +build !windows | ||||
|  | ||||
| /* | ||||
| @@ -67,9 +68,12 @@ var DefaultSysSpec = SysSpec{ | ||||
| 		// The hugetlb cgroup is optional since some kernels are compiled without support for huge pages | ||||
| 		// and therefore lacks corresponding hugetlb cgroup | ||||
| 		"hugetlb", | ||||
| 		// The blkio cgroup is optional since some kernels are compiled without support for block I/O throttling. | ||||
| 		// Containerd and cri-o will use blkio to track disk I/O and throttling in both cgroup v1 and v2. | ||||
| 		"blkio", | ||||
| 	}, | ||||
| 	CgroupsV2:         []string{"cpu", "cpuset", "devices", "freezer", "memory", "pids"}, | ||||
| 	CgroupsV2Optional: []string{"hugetlb"}, | ||||
| 	CgroupsV2Optional: []string{"hugetlb", "blkio"}, | ||||
| 	RuntimeSpec: RuntimeSpec{ | ||||
| 		DockerSpec: &DockerSpec{ | ||||
| 			Version:     []string{`1\.1[1-3]\..*`, `17\.0[3,6,9]\..*`, `18\.0[6,9]\..*`, `19\.03\..*`, `20\.10\..*`}, | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/k8s.io/system-validators/validators/types_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/k8s.io/system-validators/validators/types_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,3 +1,4 @@ | ||||
| //go:build windows | ||||
| // +build windows | ||||
|  | ||||
| /* | ||||
|   | ||||
							
								
								
									
										7
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							| @@ -155,6 +155,8 @@ github.com/bits-and-blooms/bitset | ||||
| # github.com/blang/semver v3.5.1+incompatible => github.com/blang/semver v3.5.1+incompatible | ||||
| ## explicit | ||||
| github.com/blang/semver | ||||
| # github.com/blang/semver/v4 v4.0.0 => github.com/blang/semver/v4 v4.0.0 | ||||
| github.com/blang/semver/v4 | ||||
| # github.com/boltdb/bolt v1.3.1 => github.com/boltdb/bolt v1.3.1 | ||||
| ## explicit | ||||
| # github.com/cespare/xxhash/v2 v2.1.2 => github.com/cespare/xxhash/v2 v2.1.2 | ||||
| @@ -2293,7 +2295,7 @@ k8s.io/sample-apiserver/pkg/generated/openapi | ||||
| k8s.io/sample-apiserver/pkg/registry | ||||
| k8s.io/sample-apiserver/pkg/registry/wardle/fischer | ||||
| k8s.io/sample-apiserver/pkg/registry/wardle/flunder | ||||
| # k8s.io/system-validators v1.6.0 => k8s.io/system-validators v1.6.0 | ||||
| # k8s.io/system-validators v1.7.0 => k8s.io/system-validators v1.7.0 | ||||
| ## explicit | ||||
| k8s.io/system-validators/validators | ||||
| # k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 => k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 | ||||
| @@ -2454,6 +2456,7 @@ sigs.k8s.io/yaml | ||||
| # github.com/beorn7/perks => github.com/beorn7/perks v1.0.1 | ||||
| # github.com/bits-and-blooms/bitset => github.com/bits-and-blooms/bitset v1.2.0 | ||||
| # github.com/blang/semver => github.com/blang/semver v3.5.1+incompatible | ||||
| # github.com/blang/semver/v4 => github.com/blang/semver/v4 v4.0.0 | ||||
| # github.com/boltdb/bolt => github.com/boltdb/bolt v1.3.1 | ||||
| # github.com/census-instrumentation/opencensus-proto => github.com/census-instrumentation/opencensus-proto v0.2.1 | ||||
| # github.com/certifi/gocertifi => github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054 | ||||
| @@ -2748,7 +2751,7 @@ sigs.k8s.io/yaml | ||||
| # k8s.io/sample-apiserver => ./staging/src/k8s.io/sample-apiserver | ||||
| # k8s.io/sample-cli-plugin => ./staging/src/k8s.io/sample-cli-plugin | ||||
| # k8s.io/sample-controller => ./staging/src/k8s.io/sample-controller | ||||
| # k8s.io/system-validators => k8s.io/system-validators v1.6.0 | ||||
| # k8s.io/system-validators => k8s.io/system-validators v1.7.0 | ||||
| # k8s.io/utils => k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 | ||||
| # modernc.org/cc => modernc.org/cc v1.0.0 | ||||
| # modernc.org/golex => modernc.org/golex v1.0.0 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Lubomir I. Ivanov
					Lubomir I. Ivanov