Documentation ¶
Index ¶
- Constants
- func IsCommitModuleReference(moduleReference ModuleReference) bool
- func IsCommitReference(reference string) bool
- func IsDigestChanged(err error) bool
- func ModulePinEqual(a ModulePin, b ModulePin) bool
- func ModuleReferenceEqual(a ModuleReference, b ModuleReference) bool
- func NewProtoModulePinForModulePin(modulePin ModulePin) *modulev1alpha1.ModulePin
- func NewProtoModulePinsForModulePins(modulePins ...ModulePin) []*modulev1alpha1.ModulePin
- func NewProtoModuleReferenceForModuleReference(moduleReference ModuleReference) *modulev1alpha1.ModuleReference
- func NewProtoModuleReferencesForModuleReferences(moduleReferences ...ModuleReference) []*modulev1alpha1.ModuleReference
- func PutDependencyModulePinsToBucket(ctx context.Context, writeBucket storage.WriteBucket, modulePins []ModulePin) error
- func SortFileInfos(fileInfos []FileInfo)
- func SortFileInfosByExternalPath(fileInfos []FileInfo)
- func SortModulePins(modulePins []ModulePin)
- func SortModuleReferences(references []ModuleReference)
- func ValidateModuleFilePath(path string) error
- func ValidateModulePinsConsistentDigests(ctx context.Context, bucket storage.ReadBucket, modulePins []ModulePin) error
- func ValidateModulePinsUniqueByIdentity(modulePins []ModulePin) error
- func ValidateModuleReferencesUniqueByIdentity(moduleReferences []ModuleReference) error
- func ValidateProtoModulePin(protoModulePin *modulev1alpha1.ModulePin) error
- func ValidateProtoModuleReference(protoModuleReference *modulev1alpha1.ModuleReference) error
- func ValidateRemoteHasNoPaths(remote string) error
- func ValidateRemoteNotEmpty(remote string) error
- type FileInfo
- type ModuleIdentity
- type ModuleOwner
- type ModulePin
- func DependencyModulePinsForBucket(ctx context.Context, readBucket storage.ReadBucket) ([]ModulePin, error)
- func NewModulePin(remote string, owner string, repository string, commit string, digest string) (ModulePin, error)
- func NewModulePinForProto(protoModulePin *modulev1alpha1.ModulePin) (ModulePin, error)
- func NewModulePinsForProtos(protoModulePins ...*modulev1alpha1.ModulePin) ([]ModulePin, error)
- type ModuleReference
- func ModuleReferenceForString(path string) (ModuleReference, error)
- func NewModuleReference(remote string, owner string, repository string, reference string) (ModuleReference, error)
- func NewModuleReferenceForProto(protoModuleReference *modulev1alpha1.ModuleReference) (ModuleReference, error)
- func NewModuleReferencesForProtos(protoModuleReferences ...*modulev1alpha1.ModuleReference) ([]ModuleReference, error)
Constants ¶
const (
// Main is the default reference used if no other reference is specified.
Main = "main"
)
Variables ¶
This section is empty.
Functions ¶
func IsCommitModuleReference ¶
func IsCommitModuleReference(moduleReference ModuleReference) bool
IsCommitModuleReference returns true if the ModuleReference references a commit.
If false, this means the ModuleReference references a branch or tag. Branch and tag disambiguation needs to be done server-side.
func IsCommitReference ¶
IsCommitReference returns whether the provided reference is a commit.
func IsDigestChanged ¶ added in v1.15.1
IsDigestChanged returns true if the error indicates an unexpected digest change.
func ModulePinEqual ¶
ModulePinEqual returns true if a equals b.
func ModuleReferenceEqual ¶
func ModuleReferenceEqual(a ModuleReference, b ModuleReference) bool
ModuleReferenceEqual returns true if a equals b.
func NewProtoModulePinForModulePin ¶
func NewProtoModulePinForModulePin(modulePin ModulePin) *modulev1alpha1.ModulePin
NewProtoModulePinForModulePin returns a new proto ModulePin for the given ModulePin.
func NewProtoModulePinsForModulePins ¶
func NewProtoModulePinsForModulePins(modulePins ...ModulePin) []*modulev1alpha1.ModulePin
NewProtoModulePinsForModulePins maps the given module pins into the protobuf representation.
func NewProtoModuleReferenceForModuleReference ¶
func NewProtoModuleReferenceForModuleReference(moduleReference ModuleReference) *modulev1alpha1.ModuleReference
NewProtoModuleReferenceForModuleReference returns a new proto ModuleReference for the given ModuleReference.
func NewProtoModuleReferencesForModuleReferences ¶
func NewProtoModuleReferencesForModuleReferences(moduleReferences ...ModuleReference) []*modulev1alpha1.ModuleReference
NewProtoModuleReferencesForModuleReferences maps the given module references into the protobuf representation.
func PutDependencyModulePinsToBucket ¶
func PutDependencyModulePinsToBucket( ctx context.Context, writeBucket storage.WriteBucket, modulePins []ModulePin, ) error
PutDependencyModulePinsToBucket writes the module dependencies to the write bucket in the form of a lock file.
func SortFileInfos ¶
func SortFileInfos(fileInfos []FileInfo)
SortFileInfos sorts the FileInfos by Path.
This should be treated as the default sorting mechanism.
func SortFileInfosByExternalPath ¶
func SortFileInfosByExternalPath(fileInfos []FileInfo)
SortFileInfosByExternalPath sorts the FileInfos by ExternalPath.
func SortModulePins ¶
func SortModulePins(modulePins []ModulePin)
SortModulePins sorts the ModulePins.
func SortModuleReferences ¶ added in v1.20.0
func SortModuleReferences(references []ModuleReference)
SortModuleReferences sorts the ModuleReferences lexicographically by their identity.
func ValidateModuleFilePath ¶
ValidateModuleFilePath validates that the module file path is not empty. It performs client-side validation only, and is limited to properties we do not think will change in the future.
func ValidateModulePinsConsistentDigests ¶ added in v1.15.1
func ValidateModulePinsConsistentDigests( ctx context.Context, bucket storage.ReadBucket, modulePins []ModulePin, ) error
ValidateModulePinsConsistentDigests verifies that module pins to the same commit don't change digests. This is important to avoid MITM issues, where the module digest stored in a buf.lock file doesn't match the module pin returned from the BSR. Returns an error that fulfills IsDigestChanged if any valid digest changed from the buf.lock file for the same dependency commit.
func ValidateModulePinsUniqueByIdentity ¶
ValidateModulePinsUniqueByIdentity returns an error if the module pins contain any duplicates.
This only checks remote, owner, repository.
func ValidateModuleReferencesUniqueByIdentity ¶
func ValidateModuleReferencesUniqueByIdentity(moduleReferences []ModuleReference) error
ValidateModuleReferencesUniqueByIdentity returns an error if the module references contain any duplicates.
This only checks remote, owner, repository.
func ValidateProtoModulePin ¶
func ValidateProtoModulePin(protoModulePin *modulev1alpha1.ModulePin) error
ValidateProtoModulePin verifies the given module pin is well-formed. It performs client-side validation only, and is limited to fields we do not think will change in the future.
func ValidateProtoModuleReference ¶
func ValidateProtoModuleReference(protoModuleReference *modulev1alpha1.ModuleReference) error
ValidateProtoModuleReference verifies the given module reference is well-formed. It performs client-side validation only, and is limited to fields we do not think will change in the future.
func ValidateRemoteHasNoPaths ¶ added in v1.5.0
ValidateRemoteHasNoPaths validates that the given remote address contains no paths/subdirectories after the root It performs client-side validation only, and is limited to fields we do not think will change in the future.
func ValidateRemoteNotEmpty ¶ added in v1.5.0
ValidateRemoteNotEmpty validates that the given remote address is not an empty string It performs client-side validation only, and is limited to fields we do not think will change in the future.
Types ¶
type FileInfo ¶
type FileInfo interface { // Path is the path of the file relative to the root it is contained within. // This will be normalized, validated and never empty, // This will be unique within a given Image. Path() string // ExternalPath returns the path that identifies this file externally. // // This will be unnormalized. // Never empty. Falls back to Path if there is not an external path. // // Example: // Assume we had the input path /foo/bar which is a local directory. // Path: one/one.proto // RootDirPath: proto // ExternalPath: /foo/bar/proto/one/one.proto ExternalPath() string // IsImport returns true if this file is an import. IsImport() bool // ModuleIdentity is the module that this file came from. // // Note this *can* be nil if we did not build from a named module. // All code must assume this can be nil. // Note that nil checking should work since the backing type is always a pointer. ModuleIdentity() ModuleIdentity // Commit is the commit for the module that this file came from. // // This will only be set if ModuleIdentity is set, but may not be set // even if ModuleIdentity is set, that is commit is optional information // even if we know what module this file came from. Commit() string // FileInfoWithIsImport returns this FileInfo with the given IsImport value. FileInfoWithIsImport(isImport bool) FileInfo // contains filtered or unexported methods }
FileInfo contains module file info.
func NewFileInfo ¶
func NewFileInfo( path string, externalPath string, isImport bool, moduleIdentity ModuleIdentity, commit string, ) (FileInfo, error)
NewFileInfo returns a new FileInfo.
TODO: we should make moduleIdentity and commit options. TODO: we don't validate commit
type ModuleIdentity ¶
type ModuleIdentity interface { ModuleOwner Repository() string // IdentityString is the string remote/owner/repository. IdentityString() string // contains filtered or unexported methods }
ModuleIdentity is a module identity.
It just contains remote, owner, repository.
This is shared by ModuleReference and ModulePin.
func ModuleIdentityForString ¶
func ModuleIdentityForString(path string) (ModuleIdentity, error)
ModuleIdentityForString returns a new ModuleIdentity for the given string.
This parses the path in the form remote/owner/repository
TODO: we may want to add a special error if we detect / or @ as this may be a common mistake.
func NewModuleIdentity ¶
func NewModuleIdentity( remote string, owner string, repository string, ) (ModuleIdentity, error)
NewModuleIdentity returns a new ModuleIdentity.
type ModuleOwner ¶
type ModuleOwner interface { Remote() string Owner() string // contains filtered or unexported methods }
ModuleOwner is a module owner.
It just contains remote, owner.
This is shared by ModuleIdentity.
func ModuleOwnerForString ¶
func ModuleOwnerForString(path string) (ModuleOwner, error)
ModuleOwnerForString returns a new ModuleOwner for the given string.
This parses the path in the form remote/owner.
func NewModuleOwner ¶
func NewModuleOwner( remote string, owner string, ) (ModuleOwner, error)
NewModuleOwner returns a new ModuleOwner.
type ModulePin ¶
type ModulePin interface { ModuleIdentity // Prints remote/owner/repository:commit, which matches ModuleReference fmt.Stringer // all of these will be set Commit() string Digest() string // contains filtered or unexported methods }
ModulePin is a module pin.
It references a specific point in time of a Module.
Note that a commit does this itself, but we want all this information. This is what is stored in a buf.lock file.
func DependencyModulePinsForBucket ¶
func DependencyModulePinsForBucket( ctx context.Context, readBucket storage.ReadBucket, ) ([]ModulePin, error)
DependencyModulePinsForBucket reads the module dependencies from the lock file in the bucket.
func NewModulePin ¶
func NewModulePin( remote string, owner string, repository string, commit string, digest string, ) (ModulePin, error)
NewModulePin returns a new validated ModulePin.
func NewModulePinForProto ¶
func NewModulePinForProto(protoModulePin *modulev1alpha1.ModulePin) (ModulePin, error)
NewModulePinForProto returns a new ModulePin for the given proto ModulePin.
func NewModulePinsForProtos ¶
func NewModulePinsForProtos(protoModulePins ...*modulev1alpha1.ModulePin) ([]ModulePin, error)
NewModulePinsForProtos maps the Protobuf equivalent into the internal representation.
type ModuleReference ¶
type ModuleReference interface { ModuleIdentity // Prints either remote/owner/repository:{branch,commit} // If the reference is equal to MainBranch, prints remote/owner/repository. fmt.Stringer // Either branch, tag, or commit Reference() string // contains filtered or unexported methods }
ModuleReference is a module reference.
It references either a branch, tag, or a commit. Note that since commits belong to branches, we can deduce the branch from the commit when resolving.
func ModuleReferenceForString ¶
func ModuleReferenceForString(path string) (ModuleReference, error)
ModuleReferenceForString returns a new ModuleReference for the given string. If a branch, commit, draft, or tag is not provided, the "main" branch is used.
This parses the path in the form remote/owner/repository{:branch,:commit,:draft,:tag}.
func NewModuleReference ¶
func NewModuleReference( remote string, owner string, repository string, reference string, ) (ModuleReference, error)
NewModuleReference returns a new validated ModuleReference.
func NewModuleReferenceForProto ¶
func NewModuleReferenceForProto(protoModuleReference *modulev1alpha1.ModuleReference) (ModuleReference, error)
NewModuleReferenceForProto returns a new ModuleReference for the given proto ModuleReference.
func NewModuleReferencesForProtos ¶
func NewModuleReferencesForProtos(protoModuleReferences ...*modulev1alpha1.ModuleReference) ([]ModuleReference, error)
NewModuleReferencesForProtos maps the Protobuf equivalent into the internal representation.