Documentation
¶
Index ¶
- func ImageToCodeGeneratorRequest(image Image, parameter string, compilerVersion *pluginpb.Version, ...) *pluginpb.CodeGeneratorRequest
- func ImageToFileDescriptorProtos(image Image) []*descriptorpb.FileDescriptorProto
- func ImageToFileDescriptorSet(image Image) *descriptorpb.FileDescriptorSet
- func ImageToFileDescriptors(image Image) []protodescriptor.FileDescriptor
- func ImageToProtoImage(image Image) *imagev1.Image
- func ImagesToCodeGeneratorRequests(images []Image, parameter string, compilerVersion *pluginpb.Version, ...) []*pluginpb.CodeGeneratorRequest
- func ProtoImageToFileDescriptors(protoImage *imagev1.Image) []protodescriptor.FileDescriptor
- type Image
- func ImageByDir(image Image) ([]Image, error)
- func ImageWithOnlyPaths(image Image, paths []string, excludePaths []string) (Image, error)
- func ImageWithOnlyPathsAllowNotExist(image Image, paths []string, excludePaths []string) (Image, error)
- func ImageWithoutImports(image Image) Image
- func MergeImages(images ...Image) (Image, error)
- func NewImage(imageFiles []ImageFile) (Image, error)
- func NewImageForCodeGeneratorRequest(request *pluginpb.CodeGeneratorRequest) (Image, error)
- func NewImageForProto(protoImage *imagev1.Image) (Image, error)
- func NewMultiImage(images ...Image) (Image, error)
- type ImageFile
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ImageToCodeGeneratorRequest ¶
func ImageToCodeGeneratorRequest( image Image, parameter string, compilerVersion *pluginpb.Version, includeImports bool, ) *pluginpb.CodeGeneratorRequest
ImageToCodeGeneratorRequest returns a new CodeGeneratorRequest for the Image.
All non-imports are added as files to generate. If includeImports is set, all non-well-known-type imports are also added as files to generate.
func ImageToFileDescriptorProtos ¶
func ImageToFileDescriptorProtos(image Image) []*descriptorpb.FileDescriptorProto
ImageToFileDescriptorProtos returns the FileDescriptorProtos for the Image.
func ImageToFileDescriptorSet ¶
func ImageToFileDescriptorSet(image Image) *descriptorpb.FileDescriptorSet
ImageToFileDescriptorSet returns a new FileDescriptorSet for the Image.
func ImageToFileDescriptors ¶
func ImageToFileDescriptors(image Image) []protodescriptor.FileDescriptor
ImageToFileDescriptors returns the FileDescriptors for the Image.
func ImageToProtoImage ¶
ImageToProtoImage returns a new ProtoImage for the Image.
func ImagesToCodeGeneratorRequests ¶
func ImagesToCodeGeneratorRequests( images []Image, parameter string, compilerVersion *pluginpb.Version, includeImports bool, ) []*pluginpb.CodeGeneratorRequest
ImagesToCodeGeneratorRequests converts the Images to CodeGeneratorRequests.
All non-imports are added as files to generate. If includeImports is set, all non-well-known-type imports are also added as files to generate. If includeImports is set, only one CodeGeneratorRequest will contain any given file as a FileToGenerate.
func ProtoImageToFileDescriptors ¶
func ProtoImageToFileDescriptors(protoImage *imagev1.Image) []protodescriptor.FileDescriptor
ProtoImageToFileDescriptors returns the FileDescriptors for the proto Image.
Types ¶
type Image ¶
type Image interface {
// Files are the files that comprise the image.
//
// This contains all files, including imports if available.
// The returned files are in correct DAG order.
Files() []ImageFile
// GetFile gets the file for the root relative file path.
//
// If the file does not exist, nil is returned.
// The path is expected to be normalized and validated.
// Note that all values of GetDependency() can be used here.
GetFile(path string) ImageFile
// contains filtered or unexported methods
}
Image is a buf image.
func ImageByDir ¶
ImageByDir returns multiple images that have non-imports split by directory.
That is, each Image will only contain a single directoy's files as it's non-imports, along with all required imports for the files in that directory.
func ImageWithOnlyPaths ¶
ImageWithOnlyPaths returns a copy of the Image that only includes the files with the given root relative file paths or directories.
Note that paths can be either files or directories - whether or not a path is included is a result of normalpath.EqualsOrContainsPath.
If a root relative file path does not exist, this errors.
func ImageWithOnlyPathsAllowNotExist ¶
func ImageWithOnlyPathsAllowNotExist( image Image, paths []string, excludePaths []string, ) (Image, error)
ImageWithOnlyPathsAllowNotExist returns a copy of the Image that only includes the files with the given root relative file paths.
Note that paths can be either files or directories - whether or not a path is included is a result of normalpath.EqualsOrContainsPath.
If a root relative file path does not exist, this skips this path.
func ImageWithoutImports ¶
ImageWithoutImports returns a copy of the Image without imports.
The backing Files are not copied.
func MergeImages ¶
MergeImages returns a new Image for the given Images. ImageFiles treated as non-imports in at least one of the given Images will be treated as non-imports in the returned Image. The first non-import version of a file will be used in the result.
Reorders the ImageFiles to be in DAG order. Duplicates can exist across the Images, but only if duplicates are non-imports.
func NewImage ¶
NewImage returns a new Image for the given ImageFiles.
The input ImageFiles are expected to be in correct DAG order! TODO: Consider checking the above, and if not, reordering the Files. If imageFiles is empty, returns error
func NewImageForCodeGeneratorRequest ¶
func NewImageForCodeGeneratorRequest(request *pluginpb.CodeGeneratorRequest) (Image, error)
NewImageForCodeGeneratorRequest returns a new Image from a given CodeGeneratorRequest.
The input Files are expected to be in correct DAG order! TODO: Consider checking the above, and if not, reordering the Files.
func NewImageForProto ¶
NewImageForProto returns a new Image for the given proto Image.
The input Files are expected to be in correct DAG order! TODO: Consider checking the above, and if not, reordering the Files.
TODO: do we want to add the ability to do external path resolution here?
func NewMultiImage ¶
NewMultiImage returns a new Image for the given Images.
Reorders the ImageFiles to be in DAG order. Duplicates cannot exist across the Images.
type ImageFile ¶
type ImageFile interface {
bufmoduleref.FileInfo
// Proto is the backing *descriptorpb.FileDescriptorProto for this File.
//
// FileDescriptor should be preferred to Proto. We keep this method around
// because we have code that does modification to the ImageFile via this.
//
// This will never be nil.
// The value Path() is equal to Proto.GetName() .
Proto() *descriptorpb.FileDescriptorProto
// FileDescriptor is the backing FileDescriptor for this File.
//
// This will never be nil.
// The value Path() is equal to FileDescriptor.GetName() .
FileDescriptor() protodescriptor.FileDescriptor
// IsSyntaxUnspecified will be true if the syntax was not explicitly specified.
IsSyntaxUnspecified() bool
// UnusedDependencyIndexes returns the indexes of the unused dependencies within
// FileDescriptor.GetDependency().
//
// All indexes will be valid.
// Will return nil if empty.
UnusedDependencyIndexes() []int32
// contains filtered or unexported methods
}
ImageFile is a Protobuf file within an image.
func NewImageFile ¶
func NewImageFile( fileDescriptor protodescriptor.FileDescriptor, moduleIdentity bufmoduleref.ModuleIdentity, commit string, externalPath string, isImport bool, isSyntaxUnspecified bool, unusedDependencyIndexes []int32, ) (ImageFile, error)
NewImageFile returns a new ImageFile.
If externalPath is empty, path is used.
TODO: moduleIdentity and commit should be options since they are optional.