Documentation ¶
Index ¶
Constants ¶
const DefaultWalkTimeout time.Duration = 3 * time.Second
DefaultWalkTimeout is the default walk timeout.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type ProtoFile ¶
type ProtoFile struct { // The path to the .proto file. // Must be absolute. // Must be cleaned. Path string // The path to display in output. // This will be relative to the working directory, or the absolute path // if the file was outside the working directory. DisplayPath string }
ProtoFile represents a .proto file.
type ProtoSet ¶
type ProtoSet struct { // The working directory path. // Must be absolute. // Must be cleaned. WorkDirPath string // The given directory path. // This will be the same as WorkDirPath if files were given. // Must be absolute. // Must be cleaned. DirPath string // The directory path to slice of .proto files. // All paths must be absolute. // Must be cleaned. DirPathToFiles map[string][]*ProtoFile // The associated Config. // Must be valid. // The DirPath on the config may differ from the DirPath // on the ProtoSet. Config settings.Config }
ProtoSet represents a set of .proto files and an associated config.
ProtoSets will be validated if returned from this package.
type ProtoSetProvider ¶
type ProtoSetProvider interface { // GetMultipleForDir gets the ProtoSets for the given dirPath. // Each ProtoSet will have the config assocated with all files associated with // the ProtoSet. // // This will return all .proto files in the directory of the associated config file // and all it's subdirectories, or the given directory and its subdirectories // if there is no config file. // // Configs will be searched for starting at the directory of each .proto file // and going up a directory until hitting root. GetMultipleForDir(workDirPath string, dirPath string) ([]*ProtoSet, error) // GetMultipleForFiles gets the ProtoSets for the given filePaths. // Each ProtoSet will have the config assocated with all files associated with // the ProtoSet. // // Configs will be searched for starting at the directory of each .proto file // and going up a directory until hitting root. // // This ignores excludes, all files given will be included. GetMultipleForFiles(workDirPath string, filePaths ...string) ([]*ProtoSet, error) // GetForDir does the same logic as GetMultipleForDir, but returns an error if there // is not exactly one ProtoSet. We keep the original logic and testing for multiple // ProtoSets around as we are still discussing this pre-v1.0. // https://github.com/uber/prototool/issues/10 // https://github.com/uber/prototool/issues/93 GetForDir(workDirPath string, dirPath string) (*ProtoSet, error) // GetForFiles does the same logic as GetMultipleForFiles, but returns an error if there // is not exactly one ProtoSet. We keep the original logic and testing for multiple // ProtoSets around as we are still discussing this pre-v1.0. // https://github.com/uber/prototool/issues/10 // https://github.com/uber/prototool/issues/93 GetForFiles(workDirPath string, filePaths ...string) (*ProtoSet, error) }
ProtoSetProvider provides ProtoSets.
func NewProtoSetProvider ¶
func NewProtoSetProvider(options ...ProtoSetProviderOption) ProtoSetProvider
NewProtoSetProvider returns a new ProtoSetProvider.
type ProtoSetProviderOption ¶
type ProtoSetProviderOption func(*protoSetProvider)
ProtoSetProviderOption is an option for a new ProtoSetProvider.
func ProtoSetProviderWithLogger ¶
func ProtoSetProviderWithLogger(logger *zap.Logger) ProtoSetProviderOption
ProtoSetProviderWithLogger returns a ProtoSetProviderOption that uses the given logger.
The default is to use zap.NewNop().
func ProtoSetProviderWithWalkTimeout ¶
func ProtoSetProviderWithWalkTimeout(walkTimeout time.Duration) ProtoSetProviderOption
ProtoSetProviderWithWalkTimeout returns a ProtoSetProviderOption will timeout after walking a directory structure when searching for Protobuf files after the given amount of time.
The default is to timeout after DefaultTimeoutDuration. Set to 0 for no timeout.