mirror of
https://github.com/mudler/luet.git
synced 2025-09-09 19:19:49 +00:00
Move version logic inside versioner
WIP, it needs yet to be under the interface implementation
This commit is contained in:
@@ -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,
|
||||||
)
|
)
|
||||||
|
@@ -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)
|
||||||
|
}
|
||||||
|
@@ -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)
|
|
||||||
}
|
|
@@ -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"
|
||||||
)
|
)
|
Reference in New Issue
Block a user