func kibanaVersionConditionIsGreaterThanOrEqualTo()

in code/go/internal/validator/semantic/validate_minimum_kibana_version.go [151:178]


func kibanaVersionConditionIsGreaterThanOrEqualTo(kibanaVersionCondition, minimumVersion string) bool {
	if kibanaVersionCondition == "" {
		return false
	}

	if kibanaVersionCondition == fmt.Sprintf("^%s", minimumVersion) {
		return true
	}

	// get all versions e.g 8.8.0, 8.8.1 from "^8.8.0 || ^8.8.1" and check if any of them is less than 8.8.0
	pattern := `(\d+\.\d+\.\d+)`
	minSemver := semver.MustParse(minimumVersion)
	regex := regexp.MustCompile(pattern)
	matches := regex.FindAllString(kibanaVersionCondition, -1)

	for _, match := range matches {
		matchVersion, err := semver.NewVersion(match)
		if err != nil {
			return false
		}

		if matchVersion.LessThan(minSemver) {
			return false
		}
	}

	return true
}