Skip to content
Snippets Groups Projects
Unverified Commit 7715dd75 authored by Jess's avatar Jess Committed by GitHub
Browse files

Merge pull request #254 from kyamazawa/meta-parse-version

Supports k8s version number including symbols etc.
parents 61b3b6b8 8984d042
No related branches found
No related tags found
No related merge requests found
......@@ -2,6 +2,7 @@ package utils
import (
"fmt"
"regexp"
"strconv"
"strings"
......@@ -20,11 +21,26 @@ type ServerVersion struct {
// ParseVersion parses version.Info into a ServerVersion struct
func ParseVersion(v *version.Info) (ret ServerVersion, err error) {
ret.Major, err = strconv.Atoi(v.Major)
re := regexp.MustCompile("[0-9]+")
major := re.FindAllString(v.Major, 1)
if len(major) < 1 {
err = fmt.Errorf("Parse major version failed for %s", v.Major)
return
}
ret.Major, err = strconv.Atoi(major[0])
if err != nil {
return
}
ret.Minor, err = strconv.Atoi(v.Minor)
minor := re.FindAllString(v.Minor, 1)
if len(minor) < 1 {
err = fmt.Errorf("Parse minor version failed for %s", v.Minor)
return
}
ret.Minor, err = strconv.Atoi(minor[0])
if err != nil {
return
}
......
......@@ -26,7 +26,19 @@ func TestParseVersion(t *testing.T) {
expected: ServerVersion{Major: 1, Minor: 70},
},
{
input: version.Info{Major: "1", Minor: "6x"},
input: version.Info{Major: "1", Minor: "6x"},
expected: ServerVersion{Major: 1, Minor: 6},
},
{
input: version.Info{Major: "1", Minor: "6+custom7"},
expected: ServerVersion{Major: 1, Minor: 6},
},
{
input: version.Info{Major: "", Minor: "6"},
error: true,
},
{
input: version.Info{Major: "1", Minor: ""},
error: true,
},
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment