mirror of
https://github.com/mudler/luet.git
synced 2025-08-31 23:02:16 +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 {
|
||||
|
||||
match, err := p.VersionMatchSelector(ve)
|
||||
match, err := p.VersionMatchSelector(ve, nil)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "Error on match version")
|
||||
}
|
||||
@@ -362,7 +362,7 @@ func (db *BoltDatabase) FindPackages(p Package) (Packages, error) {
|
||||
continue
|
||||
}
|
||||
|
||||
match, err := p.SelectorMatchVersion(w.GetVersion())
|
||||
match, err := p.SelectorMatchVersion(w.GetVersion(), nil)
|
||||
if err != nil {
|
||||
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 {
|
||||
|
||||
match, err := p.VersionMatchSelector(ve)
|
||||
match, err := p.VersionMatchSelector(ve, nil)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "Error on match version")
|
||||
}
|
||||
@@ -252,7 +252,7 @@ func (db *InMemoryDatabase) FindPackages(p Package) (Packages, error) {
|
||||
}
|
||||
var versionsInWorld []Package
|
||||
for ve, _ := range versions {
|
||||
match, err := p.SelectorMatchVersion(ve)
|
||||
match, err := p.SelectorMatchVersion(ve, nil)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "Error on match selector")
|
||||
}
|
||||
|
@@ -91,8 +91,8 @@ type Package interface {
|
||||
MatchLabel(*regexp.Regexp) bool
|
||||
|
||||
IsSelector() bool
|
||||
VersionMatchSelector(string) (bool, error)
|
||||
SelectorMatchVersion(string) (bool, error)
|
||||
VersionMatchSelector(string, version.Versioner) (bool, error)
|
||||
SelectorMatchVersion(string, version.Versioner) (bool, error)
|
||||
|
||||
String() string
|
||||
HumanReadableString() string
|
||||
@@ -387,7 +387,7 @@ func (p *DefaultPackage) Expand(definitiondb PackageDatabase) (Packages, error)
|
||||
return nil, err
|
||||
}
|
||||
for _, w := range all {
|
||||
match, err := p.SelectorMatchVersion(w.GetVersion())
|
||||
match, err := p.SelectorMatchVersion(w.GetVersion(), nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -750,34 +750,21 @@ end:
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *DefaultPackage) SelectorMatchVersion(v string) (bool, error) {
|
||||
func (p *DefaultPackage) SelectorMatchVersion(ver string, v version.Versioner) (bool, error) {
|
||||
if !p.IsSelector() {
|
||||
return false, errors.New("Package is not a selector")
|
||||
}
|
||||
|
||||
vS, err := version.ParseVersion(p.GetVersion())
|
||||
if err != nil {
|
||||
return false, err
|
||||
if v == nil {
|
||||
v = &version.WrappedVersioner{}
|
||||
}
|
||||
|
||||
vSI, err := version.ParseVersion(v)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
return version.PackageAdmit(vS, vSI)
|
||||
return v.ValidateSelector(ver, p.GetVersion()), nil
|
||||
}
|
||||
|
||||
func (p *DefaultPackage) VersionMatchSelector(selector string) (bool, error) {
|
||||
vS, err := version.ParseVersion(selector)
|
||||
if err != nil {
|
||||
return false, err
|
||||
func (p *DefaultPackage) VersionMatchSelector(selector string, v version.Versioner) (bool, error) {
|
||||
if v == nil {
|
||||
v = &version.WrappedVersioner{}
|
||||
}
|
||||
|
||||
vSI, err := version.ParseVersion(p.GetVersion())
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
return version.PackageAdmit(vS, vSI)
|
||||
return v.ValidateSelector(p.GetVersion(), selector), nil
|
||||
}
|
||||
|
@@ -22,4 +22,6 @@ type Versioner interface {
|
||||
Sanitize(string) string
|
||||
Validate(string) error
|
||||
Sort([]string) []string
|
||||
|
||||
ValidateSelector(version string, selector string) bool
|
||||
}
|
||||
|
@@ -43,6 +43,23 @@ func (w *WrappedVersioner) Validate(version string) error {
|
||||
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 {
|
||||
return strings.ReplaceAll(s, "_", "-")
|
||||
}
|
||||
|
Reference in New Issue
Block a user