Documentation ¶
Overview ¶
Package appprotoexec provides protoc plugin handling and execution.
Note this is currently implicitly tested through buf's protoc command. If this were split out into a separate package, testing would need to be moved to this package.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ProtocProxyPluginNames are the names of the plugins that should be proxied through protoc // in the absence of a binary. ProtocProxyPluginNames = map[string]struct{}{ "cpp": {}, "csharp": {}, "java": {}, "js": {}, "objc": {}, "php": {}, "python": {}, "ruby": {}, "kotlin": {}, } // DefaultVersion represents the default version to use as compiler version for codegen requests. DefaultVersion = newVersion( defaultMajorVersion, defaultMinorVersion, defaultPatchVersion, defaultSuffixVersion, ) )
Functions ¶
func NewHandler ¶
func NewHandler( logger *zap.Logger, storageosProvider storageos.Provider, pluginName string, options ...HandlerOption, ) (appproto.Handler, error)
NewHandler returns a new Handler based on the plugin name and optional path.
protocPath and pluginPath are optional.
- If the plugin path is set, this returns a new binary handler for that path.
- If the plugin path is unset, this does exec.LookPath for a binary named protoc-gen-pluginName, and if one is found, a new binary handler is returned for this.
- Else, if the name is in ProtocProxyPluginNames, this returns a new protoc proxy handler.
- Else, this returns error.
Types ¶
type HandlerOption ¶
type HandlerOption func(*handlerOptions)
HandlerOption is an option for a new Handler.
func HandlerWithPluginPath ¶
func HandlerWithPluginPath(pluginPath string) HandlerOption
HandlerWithPluginPath returns a new HandlerOption that sets the path to the plugin binary.
The default is to do exec.LookPath on "protoc-gen-" + pluginName.
func HandlerWithProtocPath ¶
func HandlerWithProtocPath(protocPath string) HandlerOption
HandlerWithProtocPath returns a new HandlerOption that sets the path to the protoc binary.
The default is to do exec.LookPath on "protoc".