mirror of
https://github.com/turbot/steampipe.git
synced 2025-12-19 18:12:43 -05:00
47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package versionhelpers
|
|
|
|
import (
|
|
"github.com/Masterminds/semver/v3"
|
|
)
|
|
|
|
// Constraints wraps semver.Constraints type, adding the Original property
|
|
type Constraints struct {
|
|
constraint *semver.Constraints
|
|
Original string
|
|
}
|
|
|
|
func NewConstraint(c string) (*Constraints, error) {
|
|
constraints, err := semver.NewConstraint(c)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &Constraints{
|
|
constraint: constraints,
|
|
Original: c,
|
|
}, nil
|
|
}
|
|
|
|
// Check tests if a version satisfies the constraints.
|
|
func (c Constraints) Check(v *semver.Version) bool {
|
|
return c.constraint.Check(v)
|
|
}
|
|
|
|
// Validate checks if a version satisfies a constraint. If not a slice of
|
|
// reasons for the failure are returned in addition to a bool.
|
|
func (c Constraints) Validate(v *semver.Version) (bool, []error) {
|
|
return c.constraint.Validate(v)
|
|
}
|
|
|
|
func (c Constraints) Equals(other *Constraints) bool {
|
|
return c.Original == other.Original
|
|
}
|
|
|
|
// IsPrerelease determines whether the constraint parses as a specifc version with prerelease or metadata set
|
|
func (c Constraints) IsPrerelease() bool {
|
|
v, err := semver.NewVersion(c.Original)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return v.Prerelease() != "" || v.Metadata() != ""
|
|
}
|