cache

package
v0.39.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 10, 2024 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BasePath

func BasePath(checksum, uri string) string

BasePath returns the subfolder in the cache path for the given file

Types

type Cache

type Cache struct {
	// GetSource determines how to retrieve packages.
	GetSource PackageSourceSelector
	// contains filtered or unexported fields
}

Cache manages the Hermit cache.

func Open

func Open(stateDir string, selector PackageSourceSelector, client *http.Client, fastFailClient *http.Client) (*Cache, error)

Open or create a Cache at the given directory, using the given http client.

"stateDir" is the root of the Hermit state directory.

"selector" is used to select a PackageSource for retrieving packages

"fastFailClient" is a HTTP client configured to fail quickly if a remote server is unavailable, for use in optional checks.

"strategies" are used to download URLS, attempted in order. A default raw HTTP download strategy will always be the first strategy attempted.

func (*Cache) Clean

func (c *Cache) Clean() error

Clean the cache.

func (*Cache) Create

func (c *Cache) Create(checksum, uri string) (*os.File, error)

Create a new, empty, cache entry.

func (*Cache) Download

func (c *Cache) Download(b *ui.Task, checksum, uri string, mirrors ...string) (path string, etag string, actualChecksum string, err error)

Download a local or remote artifact, transparently caching it.

If checksum is present it must be the SHA256 hash of the downloaded artifact.

func (*Cache) ETag

func (c *Cache) ETag(b *ui.Task, uri string, mirrors ...string) (etag string, err error)

ETag fetches the etag from given URI if available. Otherwise an empty string is returned

func (*Cache) Evict

func (c *Cache) Evict(b *ui.Task, checksum, uri string) error

Evict a file from the cache.

func (*Cache) IsCached

func (c *Cache) IsCached(checksum, uri string) bool

IsCached returns true if the URI is cached.

func (*Cache) Mkdir

func (c *Cache) Mkdir(uri string) (string, error)

Mkdir makes a directory for the given URI.

func (*Cache) Open

func (c *Cache) Open(b *ui.Task, checksum, uri string, mirrors ...string) (*os.File, error)

Open a local or remote artifact, transparently caching it. Subsequent accesses will use the cached copy.

If checksum is present it must be the SHA256 hash of the downloaded artifact.

func (*Cache) OpenLocal

func (c *Cache) OpenLocal(checksum, uri string) (*os.File, error)

OpenLocal opens a local cached copy of "uri", or errors.

func (*Cache) Path

func (c *Cache) Path(checksum, uri string) string

Path to cached object.

func (*Cache) Root

func (c *Cache) Root() string

Root directory of the cache.

type PackageSource added in v0.2.23

type PackageSource interface {
	OpenLocal(cache *Cache, checksum string) (*os.File, error)
	Download(b *ui.Task, cache *Cache, checksum string) (path string, etag string, actualChecksum string, err error)
	ETag(b *ui.Task) (etag string, err error)
	// Validate that a source is accessible.
	Validate() error
}

PackageSource for a specific version / system of a package

func GetSource added in v0.2.23

func GetSource(client *http.Client, uri string) (PackageSource, error)

GetSource for the given uri, or an error if the uri can not be parsed as a source

func HTTPSource added in v0.10.0

func HTTPSource(client *http.Client, url string) PackageSource

HTTPSource is a PackageSource for a HTTP URL.

type PackageSourceSelector added in v0.10.0

type PackageSourceSelector func(client *http.Client, uri string) (PackageSource, error)

PackageSourceSelector selects a PackageSource for a URI.

If not provided to the Cache, GetSource() will be used.

func GitHubSourceSelector added in v0.10.0

func GitHubSourceSelector(getSource PackageSourceSelector, ghclient *github.Client, match RepoMatcher) PackageSourceSelector

GitHubSourceSelector can download private release assets from GitHub using an authenticated GitHub client.

type RepoMatcher added in v0.10.0

type RepoMatcher func(owner, repo string) bool

RepoMatcher is used to determine which repositories will use authenticated requests.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL