Documentation ¶
Index ¶
- Constants
- func ModuleDigestB1(ctx context.Context, module Module) (string, error)
- func ModuleDigestB2(ctx context.Context, module Module) (string, error)
- func ModuleToBucket(ctx context.Context, module Module, writeBucket storage.WriteBucket) error
- func ModuleToProtoModule(ctx context.Context, module Module) (*modulev1alpha1.Module, error)
- func TargetModuleFilesToBucket(ctx context.Context, module Module, writeBucket storage.WriteBucket) error
- func ValidateProtoModule(protoModule *modulev1alpha1.Module) error
- type Module
- func ModuleWithTargetPaths(module Module, targetPaths []string) (Module, error)
- func ModuleWithTargetPathsAllowNotExist(module Module, targetPaths []string) (Module, error)
- func NewModuleForBucket(ctx context.Context, readBucket storage.ReadBucket, options ...ModuleOption) (Module, error)
- func NewModuleForProto(ctx context.Context, protoModule *modulev1alpha1.Module, ...) (Module, error)
- type ModuleFile
- type ModuleFileSet
- type ModuleOption
- type ModuleReader
- type ModuleResolver
- type Workspace
Constants ¶
const (
// DocumentationFilePath defines the path to the documentation file, relative to the root of the module.
DocumentationFilePath = "buf.md"
)
Variables ¶
This section is empty.
Functions ¶
func ModuleDigestB1 ¶
ModuleDigestB1 returns the b1 digest for the Module.
To create the module digest (SHA256):
- For every file in the module (sorted lexicographically by path): a. Add the file path b. Add the file contents
- Add the dependency hashes (sorted lexicographically by the string representation)
- Produce the final digest by URL-base64 encoding the summed bytes and prefixing it with the digest prefix
func ModuleDigestB2 ¶
ModuleDigestB2 returns the b2 digest for the Module.
To create the module digest (SHA256):
- For every file in the module (sorted lexicographically by path): a. Add the file path b. Add the file contents
- Add the dependency commits (sorted lexicographically by remote/owner/repository/commit)
- Produce the final digest by URL-base64 encoding the summed bytes and prefixing it with the digest prefix
func ModuleToBucket ¶
ModuleToBucket writes the given Module to the WriteBucket.
This writes the sources and the buf.lock file. This copies external paths if the WriteBucket supports setting of external paths.
func ModuleToProtoModule ¶
ModuleToProtoModule converts the Module to a proto Module.
This takes all Sources and puts them in the Module, not just Targets.
func TargetModuleFilesToBucket ¶
func TargetModuleFilesToBucket( ctx context.Context, module Module, writeBucket storage.WriteBucket, ) error
TargetModuleFilesToBucket writes the target files of the given Module to the WriteBucket.
This does not write the buf.lock file. This copies external paths if the WriteBucket supports setting of external paths.
func ValidateProtoModule ¶
func ValidateProtoModule(protoModule *modulev1alpha1.Module) error
ValidateProtoModule verifies the given module is well-formed. It performs client-side validation only, and is limited to fields we do not think will change in the future.
Types ¶
type Module ¶
type Module interface { // TargetFileInfos gets all FileInfos specified as target files. This is either // all the FileInfos belonging to the module, or those specified by ModuleWithTargetPaths(). // // It does not include dependencies. // // The returned TargetFileInfos are sorted by path. TargetFileInfos(ctx context.Context) ([]bufmoduleref.FileInfo, error) // SourceFileInfos gets all FileInfos belonging to the module. // // It does not include dependencies. // // The returned SourceFileInfos are sorted by path. SourceFileInfos(ctx context.Context) ([]bufmoduleref.FileInfo, error) // GetModuleFile gets the source file for the given path. // // Returns storage.IsNotExist error if the file does not exist. GetModuleFile(ctx context.Context, path string) (ModuleFile, error) // DependencyModulePins gets the dependency ModulePins. // // The returned ModulePins are sorted by remote, owner, repository, branch, commit, and then digest. // The returned ModulePins are unique by remote, owner, repository. // // This includes all transitive dependencies. DependencyModulePins() []bufmoduleref.ModulePin // Documentation gets the contents of the module documentation file, buf.md and returns the string representation. // This may return an empty string if the documentation file does not exist. Documentation() string // contains filtered or unexported methods }
Module is a Protobuf module.
It contains the files for the sources, and the dependency names.
Terminology:
Targets (Modules and ModuleFileSets):
Just the files specified to build. This will either be sources, or will be specific files within sources, ie this is a subset of Sources. The difference between Targets and Sources happens when i.e. the --path flag is used.
Sources (Modules and ModuleFileSets):
The files with no dependencies. This is a superset of Targets and subset of All.
All (ModuleFileSets only):
All files including dependencies. This is a superset of Sources.
func ModuleWithTargetPaths ¶
ModuleWithTargetPaths returns a new Module that specifies specific file or directory paths to build.
These paths must exist. These paths must be relative to the roots. These paths will be normalized and validated. These paths must be unique when normalized and validated. Multiple calls to this option will override previous calls.
Note that this will result in TargetFileInfos containing only these paths, and not any imports. Imports, and non-targeted files, are still available via SourceFileInfos.
func ModuleWithTargetPathsAllowNotExist ¶
ModuleWithTargetPathsAllowNotExist returns a new Module specified specific file or directory paths to build, but allows the specified paths to not exist.
Note that this will result in TargetFileInfos containing only these paths, and not any imports. Imports, and non-targeted files, are still available via SourceFileInfos.
func NewModuleForBucket ¶
func NewModuleForBucket( ctx context.Context, readBucket storage.ReadBucket, options ...ModuleOption, ) (Module, error)
NewModuleForBucket returns a new Module. It attempts reads dependencies from a lock file in the read bucket.
func NewModuleForProto ¶
func NewModuleForProto( ctx context.Context, protoModule *modulev1alpha1.Module, options ...ModuleOption, ) (Module, error)
NewModuleForProto returns a new Module for the given proto Module.
type ModuleFile ¶
type ModuleFile interface { bufmoduleref.FileInfo io.ReadCloser // contains filtered or unexported methods }
ModuleFile is a module file.
type ModuleFileSet ¶
type ModuleFileSet interface { // Note that GetModuleFile will pull from All files instead of just Source Files! Module // AllFileInfos gets all FileInfos associated with the module, including dependencies. // // The returned FileInfos are sorted by path. AllFileInfos(ctx context.Context) ([]bufmoduleref.FileInfo, error) // contains filtered or unexported methods }
ModuleFileSet is a Protobuf module file set.
It contains the files for both targets, sources and dependencies.
TODO: we should not have ModuleFileSet inherit from Module, this is confusing
func NewModuleFileSet ¶
func NewModuleFileSet( module Module, dependencies []Module, ) ModuleFileSet
NewModuleFileSet returns a new ModuleFileSet.
type ModuleOption ¶
type ModuleOption func(*module)
ModuleOption is used to construct Modules.
func ModuleWithModuleIdentity ¶
func ModuleWithModuleIdentity(moduleIdentity bufmoduleref.ModuleIdentity) ModuleOption
ModuleWithModuleIdentity is used to construct a Module with a ModuleIdentity.
func ModuleWithModuleIdentityAndCommit ¶
func ModuleWithModuleIdentityAndCommit(moduleIdentity bufmoduleref.ModuleIdentity, commit string) ModuleOption
ModuleWithModuleIdentityAndCommit is used to construct a Module with a ModuleIdentity and commit.
type ModuleReader ¶
type ModuleReader interface { // GetModule gets the Module for the ModulePin. // // Returns an error that fufills storage.IsNotExist if the Module does not exist. GetModule(ctx context.Context, modulePin bufmoduleref.ModulePin) (Module, error) }
ModuleReader reads resolved modules.
func NewNopModuleReader ¶
func NewNopModuleReader() ModuleReader
NewNopModuleReader returns a new ModuleReader that always returns a storage.IsNotExist error.
type ModuleResolver ¶
type ModuleResolver interface { // GetModulePin resolves the provided ModuleReference to a ModulePin. // // Returns an error that fufills storage.IsNotExist if the named Module does not exist. GetModulePin(ctx context.Context, moduleReference bufmoduleref.ModuleReference) (bufmoduleref.ModulePin, error) }
ModuleResolver resolves modules.
func NewNopModuleResolver ¶
func NewNopModuleResolver() ModuleResolver
NewNopModuleResolver returns a new ModuleResolver that always returns a storage.IsNotExist error.
type Workspace ¶
type Workspace interface { // GetModule gets the module identified by the given ModuleIdentity. GetModule(moduleIdentity bufmoduleref.ModuleIdentity) (Module, bool) // GetModules returns all of the modules found in the workspace. GetModules() []Module }
Workspace represents a module workspace.