podman: Add function to check if Podman is newer than a given version
This is in the same style as GLib's GLIB_CHECK_VERSION [1]. Note that the github.com/HarryMichal/go-version package is a fork of github.com/mcuadros/go-version. The latter is now marked as read-only and archived by its owner. The fork was necessary to fix the documentation of the CompareSimple function. The function is supposed to conform to the strcmp convention. ie., return 0 if both versions are equal, 1 if the left side is bigger, and -1 if the right side is bigger. However, the documentation had it the other way round. [1] https://developer.gnome.org/glib/stable/glib-Version-Information.html#GLIB-CHECK-VERSION:CAPS https://github.com/containers/toolbox/pull/318
This commit is contained in:
parent
b3fca25764
commit
46c21a5c14
|
|
@ -3,6 +3,7 @@ module github.com/containers/toolbox
|
||||||
go 1.13
|
go 1.13
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/HarryMichal/go-version v1.0.0
|
||||||
github.com/sirupsen/logrus v1.5.0
|
github.com/sirupsen/logrus v1.5.0
|
||||||
github.com/spf13/cobra v0.0.6
|
github.com/spf13/cobra v0.0.6
|
||||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894
|
golang.org/x/sys v0.0.0-20190422165155-953cdadca894
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
|
github.com/HarryMichal/go-version v1.0.0 h1:fXYa5vT46C3pULfSIgnfeNfSxJ9bCGZ2ERn/wKPlD6c=
|
||||||
|
github.com/HarryMichal/go-version v1.0.0/go.mod h1:w3uLQ2NlFmZ01qBywppIbDplbPEjeBW8xywlluMcMsc=
|
||||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
|
"github.com/HarryMichal/go-version"
|
||||||
"github.com/containers/toolbox/pkg/shell"
|
"github.com/containers/toolbox/pkg/shell"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
@ -28,6 +29,20 @@ var (
|
||||||
LogLevel = logrus.ErrorLevel
|
LogLevel = logrus.ErrorLevel
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// CheckVersion compares provided version with the version of Podman.
|
||||||
|
//
|
||||||
|
// Takes in one string parameter that should be in the format that is used for versioning (eg. 1.0.0, 2.5.1-dev).
|
||||||
|
//
|
||||||
|
// Returns true if the Podman version is equal to or higher than the required version.
|
||||||
|
func CheckVersion(requiredVersion string) bool {
|
||||||
|
podmanVersion, _ := GetVersion()
|
||||||
|
|
||||||
|
podmanVersion = version.Normalize(podmanVersion)
|
||||||
|
requiredVersion = version.Normalize(requiredVersion)
|
||||||
|
|
||||||
|
return version.CompareSimple(podmanVersion, requiredVersion) >= 0
|
||||||
|
}
|
||||||
|
|
||||||
// GetVersion returns version of Podman in a string
|
// GetVersion returns version of Podman in a string
|
||||||
func GetVersion() (string, error) {
|
func GetVersion() (string, error) {
|
||||||
var stdout bytes.Buffer
|
var stdout bytes.Buffer
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue