dev/citools/kibana.go (36 lines of code) (raw):
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
// or more contributor license agreements. Licensed under the Elastic License;
// you may not use this file except in compliance with the Elastic License.
package citools
import (
"fmt"
"strings"
"github.com/Masterminds/semver/v3"
)
func KibanaConstraintPackage(path string) (*semver.Constraints, error) {
manifest, err := readPackageManifest(path)
if err != nil {
return nil, fmt.Errorf("failed to read package manifest: %w", err)
}
kibanaVersion := manifest.Conditions.Kibana.Version
if kibanaVersion == "" {
return nil, nil
}
constraint, err := semver.NewConstraint(kibanaVersion)
if err != nil {
return nil, fmt.Errorf("failed to parse kibana constraint: %w", err)
}
return constraint, nil
}
func IsPackageSupportedInStackVersion(stackVersion string, path string) (bool, error) {
stackVersion = strings.TrimSuffix(stackVersion, "-SNAPSHOT")
stackSemVersion, err := semver.NewVersion(stackVersion)
if err != nil {
return false, fmt.Errorf("failed to parse stack version: %w", err)
}
packageConstraint, err := KibanaConstraintPackage(path)
if err != nil {
return false, err
}
if packageConstraint == nil {
return true, nil
}
return packageConstraint.Check(stackSemVersion), nil
}