mirror of https://github.com/hashicorp/consul
66 lines
1.7 KiB
Go
66 lines
1.7 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package utils
|
|
|
|
import (
|
|
"flag"
|
|
|
|
"github.com/hashicorp/go-version"
|
|
)
|
|
|
|
var (
|
|
TargetImageName string
|
|
TargetVersion string
|
|
|
|
LatestImageName string
|
|
LatestVersion string
|
|
|
|
FollowLog bool
|
|
Version_1_14, _ = version.NewVersion("1.14")
|
|
)
|
|
|
|
const (
|
|
DefaultImageNameOSS = "consul"
|
|
DefaultImageNameENT = "hashicorp/consul-enterprise"
|
|
ImageVersionSuffixENT = "-ent"
|
|
)
|
|
|
|
func init() {
|
|
flag.StringVar(&TargetImageName, "target-image", defaultImageName, "docker image name to be used under test (Default: "+defaultImageName+")")
|
|
flag.StringVar(&TargetVersion, "target-version", "local", "docker image version to be used as UUT (unit under test)")
|
|
|
|
flag.StringVar(&LatestImageName, "latest-image", defaultImageName, "docker image name to be used under test (Default: "+defaultImageName+")")
|
|
flag.StringVar(&LatestVersion, "latest-version", "latest", "docker image to be used as latest")
|
|
|
|
flag.BoolVar(&FollowLog, "follow-log", true, "follow container log in output (Default: true)")
|
|
}
|
|
|
|
func DockerImage(image, version string) string {
|
|
v := image + ":" + version
|
|
if image == DefaultImageNameENT && isSemVer(version) {
|
|
// Enterprise versions get a suffix.
|
|
v += ImageVersionSuffixENT
|
|
}
|
|
return v
|
|
}
|
|
|
|
func isSemVer(ver string) bool {
|
|
_, err := version.NewVersion(ver)
|
|
return err == nil
|
|
}
|
|
|
|
// ensure version a >= b
|
|
func VersionGTE(a, b string) bool {
|
|
av := version.Must(version.NewVersion(a))
|
|
bv := version.Must(version.NewVersion(b))
|
|
return av.GreaterThanOrEqual(bv)
|
|
}
|
|
|
|
// ensure version a < b
|
|
func VersionLT(a, b string) bool {
|
|
av := version.Must(version.NewVersion(a))
|
|
bv := version.Must(version.NewVersion(b))
|
|
return av.LessThan(bv)
|
|
}
|