mirror of
https://github.com/mudler/luet.git
synced 2025-09-01 07:09:13 +00:00
Add ValidateSelector to versioner interface and consume it
We can refactor furthermore by dropping the package methods, as now we can consume a versioner in all places that requires it
This commit is contained in:
@@ -233,7 +233,7 @@ func (db *BoltDatabase) getProvide(p Package) (Package, error) {
|
|||||||
|
|
||||||
for ve, _ := range versions {
|
for ve, _ := range versions {
|
||||||
|
|
||||||
match, err := p.VersionMatchSelector(ve)
|
match, err := p.VersionMatchSelector(ve, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "Error on match version")
|
return nil, errors.Wrap(err, "Error on match version")
|
||||||
}
|
}
|
||||||
@@ -362,7 +362,7 @@ func (db *BoltDatabase) FindPackages(p Package) (Packages, error) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
match, err := p.SelectorMatchVersion(w.GetVersion())
|
match, err := p.SelectorMatchVersion(w.GetVersion(), nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "Error on match selector")
|
return nil, errors.Wrap(err, "Error on match selector")
|
||||||
}
|
}
|
||||||
|
@@ -178,7 +178,7 @@ func (db *InMemoryDatabase) getProvide(p Package) (Package, error) {
|
|||||||
|
|
||||||
for ve, _ := range versions {
|
for ve, _ := range versions {
|
||||||
|
|
||||||
match, err := p.VersionMatchSelector(ve)
|
match, err := p.VersionMatchSelector(ve, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "Error on match version")
|
return nil, errors.Wrap(err, "Error on match version")
|
||||||
}
|
}
|
||||||
@@ -252,7 +252,7 @@ func (db *InMemoryDatabase) FindPackages(p Package) (Packages, error) {
|
|||||||
}
|
}
|
||||||
var versionsInWorld []Package
|
var versionsInWorld []Package
|
||||||
for ve, _ := range versions {
|
for ve, _ := range versions {
|
||||||
match, err := p.SelectorMatchVersion(ve)
|
match, err := p.SelectorMatchVersion(ve, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "Error on match selector")
|
return nil, errors.Wrap(err, "Error on match selector")
|
||||||
}
|
}
|
||||||
|
@@ -91,8 +91,8 @@ type Package interface {
|
|||||||
MatchLabel(*regexp.Regexp) bool
|
MatchLabel(*regexp.Regexp) bool
|
||||||
|
|
||||||
IsSelector() bool
|
IsSelector() bool
|
||||||
VersionMatchSelector(string) (bool, error)
|
VersionMatchSelector(string, version.Versioner) (bool, error)
|
||||||
SelectorMatchVersion(string) (bool, error)
|
SelectorMatchVersion(string, version.Versioner) (bool, error)
|
||||||
|
|
||||||
String() string
|
String() string
|
||||||
HumanReadableString() string
|
HumanReadableString() string
|
||||||
@@ -387,7 +387,7 @@ func (p *DefaultPackage) Expand(definitiondb PackageDatabase) (Packages, error)
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
for _, w := range all {
|
for _, w := range all {
|
||||||
match, err := p.SelectorMatchVersion(w.GetVersion())
|
match, err := p.SelectorMatchVersion(w.GetVersion(), nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -750,34 +750,21 @@ end:
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *DefaultPackage) SelectorMatchVersion(v string) (bool, error) {
|
func (p *DefaultPackage) SelectorMatchVersion(ver string, v version.Versioner) (bool, error) {
|
||||||
if !p.IsSelector() {
|
if !p.IsSelector() {
|
||||||
return false, errors.New("Package is not a selector")
|
return false, errors.New("Package is not a selector")
|
||||||
}
|
}
|
||||||
|
if v == nil {
|
||||||
vS, err := version.ParseVersion(p.GetVersion())
|
v = &version.WrappedVersioner{}
|
||||||
if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vSI, err := version.ParseVersion(v)
|
return v.ValidateSelector(ver, p.GetVersion()), nil
|
||||||
if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return version.PackageAdmit(vS, vSI)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *DefaultPackage) VersionMatchSelector(selector string) (bool, error) {
|
func (p *DefaultPackage) VersionMatchSelector(selector string, v version.Versioner) (bool, error) {
|
||||||
vS, err := version.ParseVersion(selector)
|
if v == nil {
|
||||||
if err != nil {
|
v = &version.WrappedVersioner{}
|
||||||
return false, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vSI, err := version.ParseVersion(p.GetVersion())
|
return v.ValidateSelector(p.GetVersion(), selector), nil
|
||||||
if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return version.PackageAdmit(vS, vSI)
|
|
||||||
}
|
}
|
||||||
|
@@ -22,4 +22,6 @@ type Versioner interface {
|
|||||||
Sanitize(string) string
|
Sanitize(string) string
|
||||||
Validate(string) error
|
Validate(string) error
|
||||||
Sort([]string) []string
|
Sort([]string) []string
|
||||||
|
|
||||||
|
ValidateSelector(version string, selector string) bool
|
||||||
}
|
}
|
||||||
|
@@ -43,6 +43,23 @@ func (w *WrappedVersioner) Validate(version string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (w *WrappedVersioner) ValidateSelector(version string, selector string) bool {
|
||||||
|
vS, err := ParseVersion(selector)
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
vSI, err := ParseVersion(version)
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
ok, err := PackageAdmit(vS, vSI)
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
func (w *WrappedVersioner) Sanitize(s string) string {
|
func (w *WrappedVersioner) Sanitize(s string) string {
|
||||||
return strings.ReplaceAll(s, "_", "-")
|
return strings.ReplaceAll(s, "_", "-")
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user