Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Backend ¶
Backend is a complete storage backend (i.e. file system, database) implementation - a lister, reader and saver.
type Cataloger ¶ added in v0.3.0
type Cataloger interface {
// Catalog gets all the modules / versions.
Catalog(ctx context.Context, token string, pageSize int) ([]paths.AllPathParams, string, error)
}
Cataloger is the interface that lists all the modules and version contained in the storage.
type Checker ¶
type Checker interface {
// Exists checks whether or not module in specified version is present
// in the backing storage.
Exists(ctx context.Context, module, version string) (bool, error)
}
Checker is the interface that checks if the version of the module exists.
func WithChecker ¶ added in v0.9.0
WithChecker wraps the backend with a Checker implementation.
type Deleter ¶
type Deleter interface {
// Delete must return ErrNotFound if the module/version are not
// found.
Delete(ctx context.Context, module, vsn string) error
}
Deleter deletes module metadata and its source from underlying storage.
type Getter ¶
type Getter interface {
Info(ctx context.Context, module, vsn string) ([]byte, error)
GoMod(ctx context.Context, module, vsn string) ([]byte, error)
Zip(ctx context.Context, module, vsn string) (SizeReadCloser, error)
}
Getter gets module metadata and its source from underlying storage.
type Lister ¶
type Lister interface {
// List gets all the versions for the given baseURL & module.
// It returns ErrNotFound if the module isn't found
List(ctx context.Context, module string) ([]string, error)
}
Lister is the interface that lists versions of a specific baseURL & module.
type Module ¶
type Module struct {
// TODO(marwan-at-work): ID is a mongo-specific field, it should not be
// in the generic storage.Module struct.
ID primitive.ObjectID `bson:"_id,omitempty"`
Module string `bson:"module"`
Version string `bson:"version"`
Mod []byte `bson:"mod"`
Info []byte `bson:"info"`
}
Module represents a vgo module saved in a storage backend.
type Origin ¶ added in v0.12.0
type Origin struct {
VCS string `json:",omitempty"` // "git" etc
URL string `json:",omitempty"` // URL of repository
Subdir string `json:",omitempty"` // subdirectory in repo
// If TagSum is non-empty, then the resolution of this module version
// depends on the set of tags present in the repo, specifically the tags
// of the form TagPrefix + a valid semver version.
// If the matching repo tags and their commit hashes still hash to TagSum,
// the Origin is still valid (at least as far as the tags are concerned).
// The exact checksum is up to the Repo implementation; see (*gitRepo).Tags.
TagPrefix string `json:",omitempty"`
TagSum string `json:",omitempty"`
// If Ref is non-empty, then the resolution of this module version
// depends on Ref resolving to the revision identified by Hash.
// If Ref still resolves to Hash, the Origin is still valid (at least as far as Ref is concerned).
// For Git, the Ref is a full ref like "refs/heads/main" or "refs/tags/v1.2.3",
// and the Hash is the Git object hash the ref maps to.
// Other VCS might choose differently, but the idea is that Ref is the name
// with a mutable meaning while Hash is a name with an immutable meaning.
Ref string `json:",omitempty"`
Hash string `json:",omitempty"`
// If RepoSum is non-empty, then the resolution of this module version
// failed due to the repo being available but the version not being present.
// This depends on the entire state of the repo, which RepoSum summarizes.
// For Git, this is a hash of all the refs and their hashes.
RepoSum string `json:",omitempty"`
}
Origin is taken from https://pkg.go.dev/cmd/go/internal/modfetch/codehost#Origin.
type RevInfo ¶
type RevInfo struct {
Origin *Origin
Name string // complete ID in underlying repository
Short string // shortened ID, for use in pseudo-version
Version string // version used in lookup
Time time.Time // commit time
Tags []string // known tags for commit
}
RevInfo is json-encodable into the response body for GET baseURL/module/@v/version.info from https://pkg.go.dev/cmd/go/internal/modfetch/codehost#RevInfo.
type Saver ¶
type Saver interface {
// Save saves the module metadata and its source to the storage.
//
// The caller MAY call zipMD5 with a nil value if the checksum is not available.
// The storage implementation MAY use the zipMD5 to verify the integrity of the zip file.
Save(ctx context.Context, module, version string, mod []byte, zip io.Reader, zipMD5, info []byte) error
}
Saver saves module metadata and its source to underlying storage.
type SizeReadCloser ¶ added in v0.11.0
type SizeReadCloser interface {
io.ReadCloser
Size() int64
}
SizeReadCloser extends io.ReadCloser with a Size() method that tells you the length of the io.ReadCloser if read in full.
func NewSizer ¶ added in v0.11.0
func NewSizer(rc io.ReadCloser, size int64) SizeReadCloser
NewSizer is a helper wrapper to return an implementation of ReadCloserSizer.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package gcp provides a storage driver to upload module files to a google cloud platform storage bucket.
|
Package gcp provides a storage driver to upload module files to a google cloud platform storage bucket. |
|
Package s3 provides a storage driver to upload module files to amazon s3 storage bucket.
|
Package s3 provides a storage driver to upload module files to amazon s3 storage bucket. |