internal/util/version.go (26 lines of code) (raw):
package util
import (
"fmt"
"os"
"strings"
)
const KubernetesVersionFile = "kubernetes-version.txt"
func DetectKubernetesVersion() (string, error) {
versionFile, err := LookPath(KubernetesVersionFile)
if err != nil {
return "", err
}
bytes, err := os.ReadFile(versionFile)
if err != nil {
return "", err
}
// "v1.2.3"
versionTag := string(bytes)
return strings.ReplaceAll(versionTag, "v", ""), nil
}
func ParseMinorVersion(semanticVersion string) (string, error) {
parts := strings.Split(semanticVersion, ".")
if len(parts) < 2 {
return "", fmt.Errorf("malformed semantic version: '%s'", semanticVersion)
}
return strings.Join(parts[:2], "."), nil
}