Move version logic inside versioner

WIP, it needs yet to be under the interface implementation
This commit is contained in:
Ettore Di Giacinto
2020-04-05 11:16:14 +02:00
parent cc0999b4c4
commit 5a5e7f1dfa
4 changed files with 44 additions and 44 deletions

View File

@@ -23,6 +23,7 @@ import (
_gentoo "github.com/Sabayon/pkgs-checker/pkg/gentoo" _gentoo "github.com/Sabayon/pkgs-checker/pkg/gentoo"
pkg "github.com/mudler/luet/pkg/package" pkg "github.com/mudler/luet/pkg/package"
version "github.com/mudler/luet/pkg/versioner"
) )
func CreateRegexArray(rgx []string) ([]*regexp.Regexp, error) { func CreateRegexArray(rgx []string) ([]*regexp.Regexp, error) {
@@ -53,14 +54,14 @@ func ParsePackageStr(p string) (*pkg.DefaultPackage, error) {
pkgVersion := "" pkgVersion := ""
if gp.VersionBuild != "" { if gp.VersionBuild != "" {
pkgVersion = fmt.Sprintf("%s%s%s+%s", pkgVersion = fmt.Sprintf("%s%s%s+%s",
pkg.PkgSelectorConditionFromInt(gp.Condition.Int()).String(), version.PkgSelectorConditionFromInt(gp.Condition.Int()).String(),
gp.Version, gp.Version,
gp.VersionSuffix, gp.VersionSuffix,
gp.VersionBuild, gp.VersionBuild,
) )
} else { } else {
pkgVersion = fmt.Sprintf("%s%s%s", pkgVersion = fmt.Sprintf("%s%s%s",
pkg.PkgSelectorConditionFromInt(gp.Condition.Int()).String(), version.PkgSelectorConditionFromInt(gp.Condition.Int()).String(),
gp.Version, gp.Version,
gp.VersionSuffix, gp.VersionSuffix,
) )

View File

@@ -749,3 +749,35 @@ end:
return nil return nil
} }
func (p *DefaultPackage) SelectorMatchVersion(v string) (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
}
vSI, err := version.ParseVersion(v)
if err != nil {
return false, err
}
return version.PackageAdmit(vS, vSI)
}
func (p *DefaultPackage) VersionMatchSelector(selector string) (bool, error) {
vS, err := version.ParseVersion(selector)
if err != nil {
return false, err
}
vSI, err := version.ParseVersion(p.GetVersion())
if err != nil {
return false, err
}
return version.PackageAdmit(vS, vSI)
}

View File

@@ -14,15 +14,14 @@
// You should have received a copy of the GNU General Public License along // You should have received a copy of the GNU General Public License along
// with this program; if not, see <http://www.gnu.org/licenses/>. // with this program; if not, see <http://www.gnu.org/licenses/>.
package pkg package version
import ( import (
"errors"
"fmt" "fmt"
"regexp" "regexp"
"strings" "strings"
version "github.com/hashicorp/go-version" semver "github.com/hashicorp/go-version"
) )
// Package Selector Condition // Package Selector Condition
@@ -252,8 +251,8 @@ func ParseVersion(v string) (PkgVersionSelector, error) {
} }
func PackageAdmit(selector, i PkgVersionSelector) (bool, error) { func PackageAdmit(selector, i PkgVersionSelector) (bool, error) {
var v1 *version.Version = nil var v1 *semver.Version = nil
var v2 *version.Version = nil var v2 *semver.Version = nil
var ans bool var ans bool
var err error var err error
var sanitizedSelectorVersion, sanitizedIVersion string var sanitizedSelectorVersion, sanitizedIVersion string
@@ -262,14 +261,14 @@ func PackageAdmit(selector, i PkgVersionSelector) (bool, error) {
// TODO: This is temporary!. I promise it. // TODO: This is temporary!. I promise it.
sanitizedSelectorVersion = strings.ReplaceAll(selector.Version, "_", "-") sanitizedSelectorVersion = strings.ReplaceAll(selector.Version, "_", "-")
v1, err = version.NewVersion(sanitizedSelectorVersion) v1, err = semver.NewVersion(sanitizedSelectorVersion)
if err != nil { if err != nil {
return false, err return false, err
} }
} }
if i.Version != "" { if i.Version != "" {
sanitizedIVersion = strings.ReplaceAll(i.Version, "_", "-") sanitizedIVersion = strings.ReplaceAll(i.Version, "_", "-")
v2, err = version.NewVersion(sanitizedIVersion) v2, err = semver.NewVersion(sanitizedIVersion)
if err != nil { if err != nil {
return false, err return false, err
} }
@@ -307,7 +306,7 @@ func PackageAdmit(selector, i PkgVersionSelector) (bool, error) {
segments[len(segments)-1]++ segments[len(segments)-1]++
} }
nextVersion := strings.Trim(strings.Replace(fmt.Sprint(segments), " ", ".", -1), "[]") nextVersion := strings.Trim(strings.Replace(fmt.Sprint(segments), " ", ".", -1), "[]")
constraints, err := version.NewConstraint( constraints, err := semver.NewConstraint(
fmt.Sprintf(">= %s, < %s", sanitizedSelectorVersion, nextVersion), fmt.Sprintf(">= %s, < %s", sanitizedSelectorVersion, nextVersion),
) )
if err != nil { if err != nil {
@@ -335,35 +334,3 @@ func PackageAdmit(selector, i PkgVersionSelector) (bool, error) {
return ans, nil return ans, nil
} }
func (p *DefaultPackage) SelectorMatchVersion(v string) (bool, error) {
if !p.IsSelector() {
return false, errors.New("Package is not a selector")
}
vS, err := ParseVersion(p.GetVersion())
if err != nil {
return false, err
}
vSI, err := ParseVersion(v)
if err != nil {
return false, err
}
return PackageAdmit(vS, vSI)
}
func (p *DefaultPackage) VersionMatchSelector(selector string) (bool, error) {
vS, err := ParseVersion(selector)
if err != nil {
return false, err
}
vSI, err := ParseVersion(p.GetVersion())
if err != nil {
return false, err
}
return PackageAdmit(vS, vSI)
}

View File

@@ -14,12 +14,12 @@
// You should have received a copy of the GNU General Public License along // You should have received a copy of the GNU General Public License along
// with this program; if not, see <http://www.gnu.org/licenses/>. // with this program; if not, see <http://www.gnu.org/licenses/>.
package pkg_test package version_test
import ( import (
gentoo "github.com/Sabayon/pkgs-checker/pkg/gentoo" gentoo "github.com/Sabayon/pkgs-checker/pkg/gentoo"
. "github.com/mudler/luet/pkg/package" . "github.com/mudler/luet/pkg/versioner"
. "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo"
. "github.com/onsi/gomega" . "github.com/onsi/gomega"
) )