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) (Image, error)
- func ImageWithOnlyPathsAllowNotExist(image Image, paths []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 ¶
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.