version/version.go
package version
import (
"github.com/Masterminds/semver/v3"
"sigs.k8s.io/controller-runtime/pkg/client"
)
const KorifiCreationVersionKey = "korifi.cloudfoundry.org/creation-version"
// version is overwritten at compile time by passing
// -ldflags -X code.cloudfoundry.org/korifi/version.Version=<version>
var Version = "v9999.99.99-local.dev"
type Checker struct {
version *semver.Version
}
func NewChecker(ver string) Checker {
return Checker{version: semver.MustParse(ver)}
}
func (c Checker) ObjectIsNewer(obj client.Object) (bool, error) {
korifiVersion := obj.GetAnnotations()[KorifiCreationVersionKey]
semVersion, err := semver.NewVersion(korifiVersion)
if err != nil {
return false, err
}
return semVersion.GreaterThan(c.version), nil
}