mirror of
https://github.com/wahyd4/jabba.git
synced 2026-08-09 12:56:36 +10:00
38 lines
725 B
Go
38 lines
725 B
Go
package semver
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/wmark/semver"
|
|
"strings"
|
|
)
|
|
|
|
type Range struct {
|
|
qualifier string
|
|
raw string
|
|
rng *semver.Range
|
|
}
|
|
|
|
func (l *Range) Contains(r *Version) bool {
|
|
return l.qualifier == r.qualifier && l.rng.Contains(r.ver)
|
|
}
|
|
|
|
func (t *Range) String() string {
|
|
return t.raw
|
|
}
|
|
|
|
func ParseRange(raw string) (*Range, error) {
|
|
p := new(Range)
|
|
p.raw = raw
|
|
// selector can be either <version> or <qualifier>@<version>
|
|
if strings.Contains(raw, "@") {
|
|
p.qualifier = raw[0:strings.Index(raw, "@")]
|
|
raw = raw[strings.Index(raw, "@")+1:]
|
|
}
|
|
parsed, err := semver.NewRange(raw)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("%s is not a valid version", raw)
|
|
}
|
|
p.rng = parsed
|
|
return p, nil
|
|
}
|