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)
|
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) {
|
func (b *BasicPluginManager) GetProtocLatestVersion(ctx context.Context) (string, error) {
|
||||||
ctx, cancel := consts.GetContextWithPerCommandTimeout(ctx)
|
ctx, cancel := consts.GetContextWithPerCommandTimeout(ctx)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
@ -216,7 +216,13 @@ func (b *BasicPluginManager) GetProtocLatestVersion(ctx context.Context) (string
|
||||||
if len(versions) == 0 {
|
if len(versions) == 0 {
|
||||||
return "", errors.New("no version list")
|
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
|
// ListProtocVersions is used to list protoc version
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,17 @@ func GetExitCode(err error) int {
|
||||||
return 1
|
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
|
// RenderWithEnv is used to render string with env
|
||||||
func RenderWithEnv(s string, ext map[string]string) string {
|
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