Documentation
¶
Index ¶
- type CompileResult
- type Compiler
- type CompilerOption
- func CompilerWithCachePath(cachePath string) CompilerOption
- func CompilerWithFileDescriptorSet() CompilerOption
- func CompilerWithFileDescriptorSetFullControl(includeImports bool, includeSourceInfo bool) CompilerOption
- func CompilerWithGen() CompilerOption
- func CompilerWithLogger(logger *zap.Logger) CompilerOption
- func CompilerWithProtocBinPath(protocBinPath string) CompilerOption
- func CompilerWithProtocURL(protocURL string) CompilerOption
- func CompilerWithProtocWKTPath(protocWKTPath string) CompilerOption
- type Downloader
- type DownloaderOption
- func DownloaderWithCachePath(cachePath string) DownloaderOption
- func DownloaderWithLogger(logger *zap.Logger) DownloaderOption
- func DownloaderWithProtocBinPath(protocBinPath string) DownloaderOption
- func DownloaderWithProtocURL(protocURL string) DownloaderOption
- func DownloaderWithProtocWKTPath(protocWKTPath string) DownloaderOption
- type FileDescriptorSet
- type FileDescriptorSets
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CompileResult ¶
type CompileResult struct {
// The failures from all calls.
Failures []*text.Failure
// Will not be set if there are any failures.
//
// Will only be set if the CompilerWithFileDescriptorSet
// option is used.
FileDescriptorSets FileDescriptorSets
}
CompileResult is the result of a compile
type Compiler ¶
type Compiler interface {
// Compile the protobuf files with protoc.
//
// If there are compile failures, they will be returned in the slice
// and there will be no error. The caller can determine if this is
// an error case. If there is any other type of error, or some output
// from protoc cannot be interpreted, an error will be returned.
Compile(*file.ProtoSet) (*CompileResult, error)
// Return the protoc commands that would be run on Compile.
//
// This will ignore the CompilerWithFileDescriptorSet option.
ProtocCommands(*file.ProtoSet) ([]string, error)
}
Compiler compiles protobuf files.
func NewCompiler ¶
func NewCompiler(options ...CompilerOption) Compiler
NewCompiler returns a new Compiler.
type CompilerOption ¶
type CompilerOption func(*compiler)
CompilerOption is an option for a new Compiler.
func CompilerWithCachePath ¶
func CompilerWithCachePath(cachePath string) CompilerOption
CompilerWithCachePath returns a CompilerOption that uses the given cachePath.
The default is ${XDG_CACHE_HOME}/prototool/$(uname -s)/$(uname -m).
func CompilerWithFileDescriptorSet ¶
func CompilerWithFileDescriptorSet() CompilerOption
CompilerWithFileDescriptorSet says to also return the FileDescriptorSet.
func CompilerWithFileDescriptorSetFullControl ¶ added in v1.4.0
func CompilerWithFileDescriptorSetFullControl(includeImports bool, includeSourceInfo bool) CompilerOption
CompilerWithFileDescriptorSetFullControl says to also return the FileDescriptorSet but with extra controls.
This is added for backwards compatibility within the codebase.
func CompilerWithGen ¶
func CompilerWithGen() CompilerOption
CompilerWithGen says to also generate the code.
func CompilerWithLogger ¶
func CompilerWithLogger(logger *zap.Logger) CompilerOption
CompilerWithLogger returns a CompilerOption that uses the given logger.
The default is to use zap.NewNop().
func CompilerWithProtocBinPath ¶ added in v1.3.0
func CompilerWithProtocBinPath(protocBinPath string) CompilerOption
CompilerWithProtocBinPath returns a CompilerOption that uses the given protoc binary path.
func CompilerWithProtocURL ¶
func CompilerWithProtocURL(protocURL string) CompilerOption
CompilerWithProtocURL returns a CompilerOption that uses the given protoc zip file URL.
The default is https://github.com/protocolbuffers/protobuf/releases/download/vVERSION/protoc-VERSION-OS-ARCH.zip.
func CompilerWithProtocWKTPath ¶ added in v1.3.0
func CompilerWithProtocWKTPath(protocWKTPath string) CompilerOption
CompilerWithProtocWKTPath returns a CompilerOption that uses the given path to include the well-known types.
type Downloader ¶
type Downloader interface {
// Download protobuf.
//
// If already downloaded, this has no effect. This is thread-safe.
// This will download to ${XDG_CACHE_HOME}/prototool/$(uname -s)/$(uname -m)
// unless overridden by a DownloaderOption.
// If ${XDG_CACHE_HOME} is not set, it defaults to ${HOME}/Library/Caches on
// Darwin, and ${HOME}/.cache on Linux.
// If ${HOME} is not set, an error will be returned.
//
// Returns the path to the downloaded protobuf artifacts.
//
// ProtocPath and WellKnownTypesIncludePath implicitly call this.
Download() (string, error)
// Get the path to protoc.
//
// If not downloaded, this downloads and caches protobuf. This is thread-safe.
ProtocPath() (string, error)
// Get the path to include for the well-known types.
//
// Inside this directory will be the subdirectories google/protobuf.
//
// If not downloaded, this downloads and caches protobuf. This is thread-safe.
WellKnownTypesIncludePath() (string, error)
// Delete any downloaded artifacts.
//
// This is not thread-safe and no calls to other functions can be reliably
// made simultaneously.
Delete() error
}
Downloader downloads and caches protobuf.
func NewDownloader ¶
func NewDownloader(config settings.Config, options ...DownloaderOption) (Downloader, error)
NewDownloader returns a new Downloader for the given config and DownloaderOptions.
type DownloaderOption ¶
type DownloaderOption func(*downloader)
DownloaderOption is an option for a new Downloader.
func DownloaderWithCachePath ¶
func DownloaderWithCachePath(cachePath string) DownloaderOption
DownloaderWithCachePath returns a DownloaderOption that uses the given cachePath.
The default is ${XDG_CACHE_HOME}/prototool/$(uname -s)/$(uname -m).
func DownloaderWithLogger ¶
func DownloaderWithLogger(logger *zap.Logger) DownloaderOption
DownloaderWithLogger returns a DownloaderOption that uses the given logger.
The default is to use zap.NewNop().
func DownloaderWithProtocBinPath ¶ added in v1.3.0
func DownloaderWithProtocBinPath(protocBinPath string) DownloaderOption
DownloaderWithProtocBinPath returns a DownloaderOption that uses the given protoc binary path.
func DownloaderWithProtocURL ¶
func DownloaderWithProtocURL(protocURL string) DownloaderOption
DownloaderWithProtocURL returns a DownloaderOption that uses the given protoc zip file URL.
The default is https://github.com/protocolbuffers/protobuf/releases/download/vVERSION/protoc-VERSION-OS-ARCH.zip.
func DownloaderWithProtocWKTPath ¶ added in v1.3.0
func DownloaderWithProtocWKTPath(protocWKTPath string) DownloaderOption
DownloaderWithProtocWKTPath returns a DownloaderOption that uses the given path to include the well-known types.
type FileDescriptorSet ¶ added in v1.4.0
type FileDescriptorSet struct {
*descriptor.FileDescriptorSet
// The containing ProtoSet.
ProtoSet *file.ProtoSet
// The absolute directory path for the built files in this FileDescriptorSet.
// This directory path will always reside within the ProtoSetDirPath,
// that is filepath.Rel(ProtoSetDirPath, DirPath) will never return
// error and always return a non-empty string. Note the string could be ".".
DirPath string
// The ProtoFiles for the built files in this FileDescriptorSet.
// The directory of Path will always be equal to DirPath.
ProtoFiles []*file.ProtoFile
}
FileDescriptorSet is a wrapper for descriptor.FileDescriptorSet.
This will contain both the files specified by ProtoFiles and all imports.
type FileDescriptorSets ¶ added in v1.4.0
type FileDescriptorSets []*FileDescriptorSet
FileDescriptorSets are a slice of FileDescriptorSet objects.
func (FileDescriptorSets) Unwrap ¶ added in v1.4.0
func (f FileDescriptorSets) Unwrap() []*descriptor.FileDescriptorSet
Unwrap converts f to []*descriptor.FileDescriptorSet.
Used for backwards compatibility with existing code that is based on descriptor.FileDescriptorSets.