如何允许 .proto 文件中包名称的减号?
How to allow minus sign for package name in .proto file?
这是我使用的 .proto
文件:
pkg/apis/workflow/v1alpha1/generated.proto
syntax = 'proto2';
package go-server.com.argo-new.pkg.apis.workflow.v1alpha1;
import "k8s.io/api/core/v1/generated.proto";
import "k8s.io/api/policy/v1beta1/generated.proto";
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
// Package-wide variables from generator "generated".
option go_package = "v1alpha1";
// ArchiveStrategy describes how to archive files/directory when saving artifacts
message ArchiveStrategy {
optional TarStrategy tar = 1;
optional NoneStrategy none = 2;
}
当我尝试编译时:
protoc -I /usr/local/include -I . -I ./vendor -I /root/go/src \
-I /root/go/pkg/mod/github.com/gogo/protobuf@v1.3.1/gogoproto \
-I /root/go/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v1.12.2/third_party/googleapis \
--include_imports --gogofast_out=plugins=grpc:/root/go/src \
--grpc-gateway_out=logtostderr=true:/root/go/src \
--swagger_out=logtostderr=true,fqn_for_swagger_name=true:. \
pkg/apis/workflow/v1alpha1/generated.proto
这让我想起了:
pkg/apis/workflow/v1alpha1/generated.proto:6:11: Expected ";"
这是一个编译错误,这意味着包名称不应包含 -
。
是否有任何方法可以在包名称中使用 -
或任何解决方法?
谢谢!
Protobuf
不允许,proto2 specs (as in your example code) nor by proto3 specs也不允许。
如规范(上述任一)所示,package
声明遵循以下模式:
package = "package" fullIdent ";"
即关键字 package
后跟 fullIdent
后跟一个 ;
分号,其中 fullIdent
定义为:
fullIdent = ident { "." ident }
即至少一个 ident
后跟零个或多个其他 ident
,前面是 .
,其中 ident
定义为:
ident = letter { letter | decimalDigit | "_" }
即至少一个字母,后跟零个或多个字母([A-Z]
、[a-z]
)、数字([0-9]
)或下划线 _
字符。
总之,您的 protobuf 包名称中不能有减号(破折号)-
。
去
此外,正如@colm.anseo 所指出的,Go package names 也不允许破折号 -
字符:
PackageName = identifier .
其中 identifier = letter { letter | unicode_digit } .
这是我使用的 .proto
文件:
pkg/apis/workflow/v1alpha1/generated.proto
syntax = 'proto2';
package go-server.com.argo-new.pkg.apis.workflow.v1alpha1;
import "k8s.io/api/core/v1/generated.proto";
import "k8s.io/api/policy/v1beta1/generated.proto";
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
// Package-wide variables from generator "generated".
option go_package = "v1alpha1";
// ArchiveStrategy describes how to archive files/directory when saving artifacts
message ArchiveStrategy {
optional TarStrategy tar = 1;
optional NoneStrategy none = 2;
}
当我尝试编译时:
protoc -I /usr/local/include -I . -I ./vendor -I /root/go/src \
-I /root/go/pkg/mod/github.com/gogo/protobuf@v1.3.1/gogoproto \
-I /root/go/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v1.12.2/third_party/googleapis \
--include_imports --gogofast_out=plugins=grpc:/root/go/src \
--grpc-gateway_out=logtostderr=true:/root/go/src \
--swagger_out=logtostderr=true,fqn_for_swagger_name=true:. \
pkg/apis/workflow/v1alpha1/generated.proto
这让我想起了:
pkg/apis/workflow/v1alpha1/generated.proto:6:11: Expected ";"
这是一个编译错误,这意味着包名称不应包含 -
。
是否有任何方法可以在包名称中使用 -
或任何解决方法?
谢谢!
Protobuf
不允许,proto2 specs (as in your example code) nor by proto3 specs也不允许。
如规范(上述任一)所示,package
声明遵循以下模式:
package = "package" fullIdent ";"
即关键字 package
后跟 fullIdent
后跟一个 ;
分号,其中 fullIdent
定义为:
fullIdent = ident { "." ident }
即至少一个 ident
后跟零个或多个其他 ident
,前面是 .
,其中 ident
定义为:
ident = letter { letter | decimalDigit | "_" }
即至少一个字母,后跟零个或多个字母([A-Z]
、[a-z]
)、数字([0-9]
)或下划线 _
字符。
总之,您的 protobuf 包名称中不能有减号(破折号)-
。
去
此外,正如@colm.anseo 所指出的,Go package names 也不允许破折号 -
字符:
PackageName = identifier .
其中 identifier = letter { letter | unicode_digit } .