From a04dadf100ab1c928ded14f13fa992e4bd6aa711 Mon Sep 17 00:00:00 2001 From: Daniele Rondina Date: Fri, 21 Feb 2020 21:56:32 +0100 Subject: [PATCH] Add support for parsing version with build --- cmd/build.go | 21 +++------------- cmd/install.go | 21 ++-------------- cmd/uninstall.go | 20 +++------------- pkg/helpers/cli.go | 60 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 54 deletions(-) create mode 100644 pkg/helpers/cli.go diff --git a/cmd/build.go b/cmd/build.go index 88f582c5..21771083 100644 --- a/cmd/build.go +++ b/cmd/build.go @@ -15,18 +15,17 @@ package cmd import ( - "fmt" "io/ioutil" "os" "github.com/mudler/luet/pkg/compiler" "github.com/mudler/luet/pkg/compiler/backend" . "github.com/mudler/luet/pkg/config" + helpers "github.com/mudler/luet/pkg/helpers" . "github.com/mudler/luet/pkg/logger" pkg "github.com/mudler/luet/pkg/package" tree "github.com/mudler/luet/pkg/tree" - _gentoo "github.com/Sabayon/pkgs-checker/pkg/gentoo" "github.com/spf13/cobra" "github.com/spf13/viper" ) @@ -137,26 +136,12 @@ var buildCmd = &cobra.Command{ luetCompiler.SetCompressionType(compiler.CompressionImplementation(compressionType)) if !all { for _, a := range args { - gp, err := _gentoo.ParsePackageStr(a) + + pack, err := helpers.ParsePackageStr(a) if err != nil { Fatal("Invalid package string ", a, ": ", err.Error()) } - if gp.Version == "" { - gp.Version = "0" - gp.Condition = _gentoo.PkgCondGreaterEqual - } - - pack := &pkg.DefaultPackage{ - Name: gp.Name, - Version: fmt.Sprintf("%s%s%s", - pkg.PkgSelectorConditionFromInt(gp.Condition.Int()).String(), - gp.Version, - gp.VersionSuffix, - ), - Category: gp.Category, - Uri: make([]string, 0), - } spec, err := luetCompiler.FromPackage(pack) if err != nil { Fatal("Error: " + err.Error()) diff --git a/cmd/install.go b/cmd/install.go index 6888ccc0..017aaf1f 100644 --- a/cmd/install.go +++ b/cmd/install.go @@ -15,17 +15,16 @@ package cmd import ( - "fmt" "os" "path/filepath" installer "github.com/mudler/luet/pkg/installer" . "github.com/mudler/luet/pkg/config" + helpers "github.com/mudler/luet/pkg/helpers" . "github.com/mudler/luet/pkg/logger" pkg "github.com/mudler/luet/pkg/package" - _gentoo "github.com/Sabayon/pkgs-checker/pkg/gentoo" "github.com/spf13/cobra" ) @@ -50,26 +49,10 @@ var installCmd = &cobra.Command{ var systemDB pkg.PackageDatabase for _, a := range args { - gp, err := _gentoo.ParsePackageStr(a) + pack, err := helpers.ParsePackageStr(a) if err != nil { Fatal("Invalid package string ", a, ": ", err.Error()) } - - if gp.Version == "" { - gp.Version = "0" - gp.Condition = _gentoo.PkgCondGreaterEqual - } - - pack := &pkg.DefaultPackage{ - Name: gp.Name, - Version: fmt.Sprintf("%s%s%s", - pkg.PkgSelectorConditionFromInt(gp.Condition.Int()).String(), - gp.Version, - gp.VersionSuffix, - ), - Category: gp.Category, - Uri: make([]string, 0), - } toInstall = append(toInstall, pack) } diff --git a/cmd/uninstall.go b/cmd/uninstall.go index e3b5573e..3574ae4e 100644 --- a/cmd/uninstall.go +++ b/cmd/uninstall.go @@ -15,16 +15,15 @@ package cmd import ( - "fmt" "os" "path/filepath" . "github.com/mudler/luet/pkg/config" + helpers "github.com/mudler/luet/pkg/helpers" installer "github.com/mudler/luet/pkg/installer" . "github.com/mudler/luet/pkg/logger" pkg "github.com/mudler/luet/pkg/package" - _gentoo "github.com/Sabayon/pkgs-checker/pkg/gentoo" "github.com/spf13/cobra" ) @@ -46,24 +45,11 @@ var uninstallCmd = &cobra.Command{ var systemDB pkg.PackageDatabase for _, a := range args { - gp, err := _gentoo.ParsePackageStr(a) + + pack, err := helpers.ParsePackageStr(a) if err != nil { Fatal("Invalid package string ", a, ": ", err.Error()) } - if gp.Version == "" { - gp.Version = "0" - gp.Condition = _gentoo.PkgCondGreaterEqual - } - pack := &pkg.DefaultPackage{ - Name: gp.Name, - Version: fmt.Sprintf("%s%s%s", - pkg.PkgSelectorConditionFromInt(gp.Condition.Int()).String(), - gp.Version, - gp.VersionSuffix, - ), - Category: gp.Category, - Uri: make([]string, 0), - } stype := LuetCfg.Viper.GetString("solver.type") discount := LuetCfg.Viper.GetFloat64("solver.discount") diff --git a/pkg/helpers/cli.go b/pkg/helpers/cli.go new file mode 100644 index 00000000..5a149285 --- /dev/null +++ b/pkg/helpers/cli.go @@ -0,0 +1,60 @@ +// Copyright © 2020 Ettore Di Giacinto +// Daniele Rondina +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this program; if not, see . + +package helpers + +import ( + "fmt" + + _gentoo "github.com/Sabayon/pkgs-checker/pkg/gentoo" + pkg "github.com/mudler/luet/pkg/package" +) + +func ParsePackageStr(p string) (*pkg.DefaultPackage, error) { + gp, err := _gentoo.ParsePackageStr(p) + if err != nil { + return nil, err + } + if gp.Version == "" { + gp.Version = "0" + gp.Condition = _gentoo.PkgCondGreaterEqual + } + + pkgVersion := "" + if gp.VersionBuild != "" { + pkgVersion = fmt.Sprintf("%s%s%s+%s", + pkg.PkgSelectorConditionFromInt(gp.Condition.Int()).String(), + gp.Version, + gp.VersionSuffix, + gp.VersionBuild, + ) + } else { + pkgVersion = fmt.Sprintf("%s%s%s", + pkg.PkgSelectorConditionFromInt(gp.Condition.Int()).String(), + gp.Version, + gp.VersionSuffix, + ) + } + + pack := &pkg.DefaultPackage{ + Name: gp.Name, + Category: gp.Category, + Version: pkgVersion, + Uri: make([]string, 0), + } + + return pack, nil +}