mirror of
https://github.com/crowdsecurity/crowdsec.git
synced 2025-05-10 20:05:55 +02:00
cscli hub: handle freebsd pre-release version numbers (#3423)
This commit is contained in:
parent
83cb3e9ead
commit
4935dc536e
3 changed files with 83 additions and 5 deletions
|
@ -69,7 +69,7 @@ func chooseBranch(ctx context.Context, cfg *csconfig.Config) string {
|
|||
return "master"
|
||||
}
|
||||
|
||||
csVersion := cwversion.VersionStrip()
|
||||
csVersion := cwversion.BaseVersion()
|
||||
if csVersion == "" {
|
||||
log.Warning("Crowdsec version is not set, using hub branch 'master'")
|
||||
return "master"
|
||||
|
|
|
@ -2,6 +2,7 @@ package cwversion
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/crowdsecurity/go-cs-lib/maptools"
|
||||
|
@ -57,10 +58,19 @@ func FullString() string {
|
|||
return ret
|
||||
}
|
||||
|
||||
// VersionStrip remove the tag from the version string, used to match with a hub branch
|
||||
func VersionStrip() string {
|
||||
ret := strings.Split(version.Version, "~")
|
||||
ret = strings.Split(ret[0], "-")
|
||||
// StripTags removes any tag (-rc, ~foo3, .r1, etc) from a version string
|
||||
func StripTags(version string) string {
|
||||
reVersion := regexp.MustCompile(`^v(\d+)\.(\d+)\.(\d+)`)
|
||||
ret := reVersion.FindStringSubmatch(version)
|
||||
|
||||
if len(ret) == 0 {
|
||||
return version
|
||||
}
|
||||
|
||||
return ret[0]
|
||||
}
|
||||
|
||||
// BaseVersion returns the version number used to match a hub branch.
|
||||
func BaseVersion() string {
|
||||
return StripTags(version.Version)
|
||||
}
|
||||
|
|
68
pkg/cwversion/version_test.go
Normal file
68
pkg/cwversion/version_test.go
Normal file
|
@ -0,0 +1,68 @@
|
|||
package cwversion
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestStripTags(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input string
|
||||
want string
|
||||
}{
|
||||
{
|
||||
name: "no tag, valid version v1.2.3",
|
||||
input: "v1.2.3",
|
||||
want: "v1.2.3",
|
||||
},
|
||||
{
|
||||
name: "tag appended with dash",
|
||||
input: "v1.2.3-rc1",
|
||||
want: "v1.2.3",
|
||||
},
|
||||
{
|
||||
name: "tag appended with tilde",
|
||||
input: "v1.2.3~foo3",
|
||||
want: "v1.2.3",
|
||||
},
|
||||
{
|
||||
name: "tag appended with dot",
|
||||
input: "v1.2.3.r1",
|
||||
want: "v1.2.3",
|
||||
},
|
||||
{
|
||||
name: "tag appended directly",
|
||||
input: "v1.2.3r1",
|
||||
want: "v1.2.3",
|
||||
},
|
||||
{
|
||||
name: "multiple digits in version",
|
||||
input: "v10.20.30-rc2",
|
||||
want: "v10.20.30",
|
||||
},
|
||||
{
|
||||
name: "invalid version (no 'v' prefix)",
|
||||
input: "1.2.3-tag",
|
||||
want: "1.2.3-tag",
|
||||
},
|
||||
{
|
||||
name: "random string",
|
||||
input: "some-random-string",
|
||||
want: "some-random-string",
|
||||
},
|
||||
{
|
||||
name: "freebsd pre-release",
|
||||
input: "v1.6.5.r1",
|
||||
want: "v1.6.5",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := StripTags(tt.input)
|
||||
require.Equal(t, tt.want, got)
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue