mirror of
https://github.com/TECHNOFAB11/powerproto.git
synced 2025-12-11 23:50:04 +01:00
fix(protoc): only use regular version
Signed-off-by: storyicon <yuanchao@bilibili.com>
This commit is contained in:
parent
8bdd192681
commit
ef9cf8a802
3 changed files with 66 additions and 3 deletions
|
|
@ -204,7 +204,7 @@ func (b *BasicPluginManager) IsProtocInstalled(ctx context.Context, version stri
|
|||
return IsProtocInstalled(ctx, b.storageDir, version)
|
||||
}
|
||||
|
||||
// GetProtocLatestVersion is used to geet the latest version of protoc
|
||||
// GetProtocLatestVersion is used to get the latest version of protoc
|
||||
func (b *BasicPluginManager) GetProtocLatestVersion(ctx context.Context) (string, error) {
|
||||
ctx, cancel := consts.GetContextWithPerCommandTimeout(ctx)
|
||||
defer cancel()
|
||||
|
|
@ -216,7 +216,13 @@ func (b *BasicPluginManager) GetProtocLatestVersion(ctx context.Context) (string
|
|||
if len(versions) == 0 {
|
||||
return "", errors.New("no version list")
|
||||
}
|
||||
return versions[len(versions)-1], nil
|
||||
regularVersions := make([]string, 0, len(versions))
|
||||
for _, version := range versions {
|
||||
if util.IsRegularVersion(version) {
|
||||
regularVersions = append(regularVersions, version)
|
||||
}
|
||||
}
|
||||
return regularVersions[len(regularVersions)-1], nil
|
||||
}
|
||||
|
||||
// ListProtocVersions is used to list protoc version
|
||||
|
|
|
|||
|
|
@ -115,7 +115,17 @@ func GetExitCode(err error) int {
|
|||
return 1
|
||||
}
|
||||
|
||||
var regexpEnvironmentVar = regexp.MustCompile(`\$[A-Za-z_]+`)
|
||||
var (
|
||||
regexpEnvironmentVar = regexp.MustCompile(`\$[A-Za-z_]+`)
|
||||
regexpRegularVersion = regexp.MustCompile(`^v[0-9]+\.[0-9]+\.[0-9]+$`)
|
||||
)
|
||||
|
||||
|
||||
// IsRegularVersion is used to determine whether the version number is a regular version number
|
||||
// Regular: va.b.c, and a, b, c are all numbers
|
||||
func IsRegularVersion(s string) bool {
|
||||
return regexpRegularVersion.MatchString(s)
|
||||
}
|
||||
|
||||
// RenderWithEnv is used to render string with env
|
||||
func RenderWithEnv(s string, ext map[string]string) string {
|
||||
|
|
|
|||
|
|
@ -120,3 +120,50 @@ func TestSortSemanticVersion(t *testing.T) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestIsRegularVersion(t *testing.T) {
|
||||
type args struct {
|
||||
s string
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
want bool
|
||||
}{
|
||||
{
|
||||
args: args{"v0.0.0"},
|
||||
want: true,
|
||||
},
|
||||
{
|
||||
args: args{"v11.0.0"},
|
||||
want: true,
|
||||
},
|
||||
{
|
||||
args: args{"v0.11.0"},
|
||||
want: true,
|
||||
},
|
||||
{
|
||||
args: args{"v0.0.11"},
|
||||
want: true,
|
||||
},
|
||||
{
|
||||
args: args{"0.0.11"},
|
||||
want: false,
|
||||
},
|
||||
{
|
||||
args: args{"0.0.a"},
|
||||
want: false,
|
||||
},
|
||||
{
|
||||
args: args{"v0.0.1-rc0"},
|
||||
want: false,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if got := IsRegularVersion(tt.args.s); got != tt.want {
|
||||
t.Errorf("IsRegularVersion() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue