accessio

package
v0.18.0 Latest Latest
Warning

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

Go to latest
Published: Nov 25, 2024 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

View Source
const ACCESS_SUFFIX = ".acc"

ACCESS_SUFFIX is the suffix of an additional blob related file used to track the last access time by its modification time, because Go does not support a platform independent way to access the last access time attribute of a filesystem.

View Source
const DESCRIPTOR_LIMIT = int64(8196 * 4)
View Source
const KIND_FILEFORMAT = "file format"

Variables

View Source
var (
	ErrClosed   = refmgmt.ErrClosed
	ErrReadOnly = errors.ErrReadOnly()
)

Functions

func ApplyOptions

func ApplyOptions(opts Options, olist ...Option) error

ApplyOptions applies the given list options on these options.

func Close

func Close(closer ...io.Closer) error

func CopyFileSystem

func CopyFileSystem(format FileFormat, srcfs vfs.FileSystem, src string, dstfs vfs.FileSystem, dst string, perm vfs.FileMode) error

func ErrInvalidFileFormat

func ErrInvalidFileFormat(fmt string) error

func GetFormats

func GetFormats() []string

func GetFormatsFor

func GetFormatsFor[T any](fileFormats map[FileFormat]T) []string

func IsRetriableError

func IsRetriableError(err error) bool

func LimitWriter

func LimitWriter(w io.Writer, n int64) io.Writer

LimitWriter returns a Writer that writes to w but stops with EOF after n bytes. The underlying implementation is a *LimitedWriter.

func NewFileBuffer

func NewFileBuffer() (*fileBuffer, error)

func NewOndemandReader

func NewOndemandReader(p ReaderProvider) io.ReadCloser

func NopWriteCloser

func NopWriteCloser(w io.Writer) io.WriteCloser

NopWriteCloser returns a ReadCloser with a no-op Close method wrapping the provided Reader r.

func OnceCloser

func OnceCloser(c io.Closer, callbacks ...CloserCallback) io.Closer

func ReadCloser

func ReadCloser(r io.Reader) io.ReadCloser

func RetriableError

func RetriableError(err error) error

func RetriableError1

func RetriableError1[T any](r T, err error) (T, error)

func RetriableError2

func RetriableError2[S, T any](s S, r T, err error) (S, T, error)

func Retry

func Retry(cnt int, d time.Duration, f func() error) error

func Retry1

func Retry1[T any](cnt int, d time.Duration, f func() (T, error)) (T, error)

func Retry2

func Retry2[S, T any](cnt int, d time.Duration, f func() (S, T, error)) (S, T, error)

func TypeForTypeSpec

func TypeForTypeSpec(t string) string

TypeForTypeSpec returns the pure type info provided by a type specification.The format hint is an optional suffix separated by a +.

Types

type BlobCache

type BlobCache interface {
	BlobSource
	BlobSink
	AddData(data blobaccess.DataAccess) (int64, digest.Digest, error)
}

func CachedAccess

func CachedAccess(src BlobSource, dst BlobSink, cache BlobCache) (BlobCache, error)

func NewCascadedBlobCache

func NewCascadedBlobCache(parent BlobCache) (BlobCache, error)

func NewCascadedBlobCacheForCache

func NewCascadedBlobCacheForCache(parent BlobSource, src BlobCache) (BlobCache, error)

func NewCascadedBlobCacheForSource

func NewCascadedBlobCacheForSource(parent BlobSource, src BlobSource) (BlobCache, error)

func NewDefaultBlobCache

func NewDefaultBlobCache(fss ...vfs.FileSystem) (BlobCache, error)

func NewStaticBlobCache

func NewStaticBlobCache(path string, fss ...vfs.FileSystem) (BlobCache, error)

func NoRefBlobCache

func NoRefBlobCache(s BlobCache) BlobCache

type BlobSink

type BlobSink interface {
	refmgmt.Allocatable
	AddBlob(blob blobaccess.BlobAccess) (int64, digest.Digest, error)
}

func NoRefBlobSink

func NoRefBlobSink(s BlobSink) BlobSink

type BlobSource

type BlobSource interface {
	refmgmt.Allocatable
	GetBlobData(digest digest.Digest) (int64, blobaccess.DataAccess, error)
}

func NoRefBlobSource

func NoRefBlobSource(s BlobSource) BlobSource

type Buffer

type Buffer interface {
	Write(out []byte) (int, error)
	Reader() (io.ReadCloser, error)
	Len() int
	Close() error
	Release() error
}

type CleanupCache

type CleanupCache interface {
	// Cleanup can be implemented to offer a cache reorg.
	// It returns the number and size of
	//	- handled entries (cnt, size)
	//	- not handled entries (ncnt, nsize)
	//	- failing entries (fcnt, fsize)
	Cleanup(p common.Printer, before *time.Time, dryrun bool) (cnt int, ncnt int, fcnt int, size int64, nsize int64, fsize int64, err error)
}

type Closer

type Closer func() error

func (Closer) Close

func (c Closer) Close() error

type CloserCallback

type CloserCallback func()

type DataWriter

type DataWriter interface {
	WriteTo(Writer) (int64, digest.Digest, error)
}

func NewDataAccessWriter

func NewDataAccessWriter(acc blobaccess.DataAccess) DataWriter

func NewReaderWriter

func NewReaderWriter(r io.ReadCloser) DataWriter

func NewWriteAtWriter

func NewWriteAtWriter(at func(w io.WriterAt) error) DataWriter

type FileFormat

type FileFormat string
const (
	FormatTar       FileFormat = "tar"
	FormatTGZ       FileFormat = "tgz"
	FormatDirectory FileFormat = "directory"
	FormatNone      FileFormat = ""
)

func DetectFormat

func DetectFormat(path string, fs vfs.FileSystem) (*FileFormat, error)

func DetectFormatForFile

func DetectFormatForFile(file vfs.File) (*FileFormat, error)

func FileFormatForTypeSpec

func FileFormatForTypeSpec(t string) FileFormat

FileFormatForTypeSpec returns the format hint provided by a type specification.The format hint is an optional suffix separated by a +.

func (FileFormat) ApplyOption

func (o FileFormat) ApplyOption(options Options) error

func (FileFormat) String

func (f FileFormat) String() string

func (FileFormat) Suffix

func (f FileFormat) Suffix() string

type LimitedBuffer

type LimitedBuffer struct {
	*LimitedWriter
	// contains filtered or unexported fields
}

func LimitBuffer

func LimitBuffer(n int64) *LimitedBuffer

func (*LimitedBuffer) Bytes

func (b *LimitedBuffer) Bytes() []byte

func (*LimitedBuffer) Exceeded

func (b *LimitedBuffer) Exceeded() bool

type LimitedWriter

type LimitedWriter struct {
	W io.Writer // underlying reader
	N int64     // max bytes remaining
}

A LimitedWriter writes to W but limits the amount of data written to just N bytes. Each call to Write updates N to reflect the new amount remaining. Write returns EOF when N <= 0 or when the underlying W returns EOF.

func (*LimitedWriter) Write

func (l *LimitedWriter) Write(p []byte) (n int, err error)

type NopCloser

type NopCloser = iotools.NopCloser

type OnDemandReader

type OnDemandReader struct {
	// contains filtered or unexported fields
}

func (*OnDemandReader) Close

func (o *OnDemandReader) Close() error

func (*OnDemandReader) Read

func (o *OnDemandReader) Read(p []byte) (n int, err error)

type Option

type Option interface {
	ApplyOption(options Options) error
}

Option is the interface to specify different archive options.

func File

func File(file vfs.File) Option

File set open file to use.

func PathFileSystem

func PathFileSystem(fs vfs.FileSystem) Option

PathFileSystem set the evaluation filesystem for the path name.

func Reader

func Reader(reader io.ReadCloser) Option

Reader set open reader to use.

func RepresentationFileSystem

func RepresentationFileSystem(fs vfs.FileSystem) Option

RepresentationFileSystem set the evaltuation filesystem for the path name.

type Options

type Options interface {
	Option

	SetFileFormat(FileFormat)
	GetFileFormat() *FileFormat

	SetPathFileSystem(vfs.FileSystem)
	GetPathFileSystem() vfs.FileSystem

	SetRepresentation(vfs.FileSystem)
	GetRepresentation() vfs.FileSystem

	SetFile(vfs.File)
	GetFile() vfs.File

	SetReader(closer io.Reader)
	GetReader() io.Reader

	ValidForPath(path string) error
	WriterFor(path string, mode vfs.FileMode) (io.WriteCloser, error)

	DefaultFormat(fmt FileFormat)
	Default(fss ...vfs.FileSystem)

	DefaultForPath(path string) error
}

func AccessOptions

func AccessOptions(opts Options, list ...Option) (Options, error)

type ReaderProvider

type ReaderProvider interface {
	Reader() (io.ReadCloser, error)
}

type ResettableReader

type ResettableReader struct {
	// contains filtered or unexported fields
}

func NewResettableReader

func NewResettableReader(orig io.ReadCloser, size int64) (*ResettableReader, error)

func (*ResettableReader) Close

func (b *ResettableReader) Close() error

func (*ResettableReader) Read

func (b *ResettableReader) Read(out []byte) (int, error)

func (*ResettableReader) Reset

func (b *ResettableReader) Reset() (io.ReadCloser, error)

type RootedCache

type RootedCache interface {
	Root() (string, vfs.FileSystem)
}

type StandardOptions

type StandardOptions struct {
	// FileFormat is the optional format.
	FileFormat *FileFormat `json:"fileFormat,omitempty"`
	// FileSystem is the virtual filesystem to evaluate the file path. Default is the OS filesytem
	// or the filesystem defined as base filesystem for the context
	// This configuration option is not available for the textual representation of
	// the repository specification
	PathFileSystem vfs.FileSystem `json:"-"`
	// Representation is the virtual filesystem to represent the active repository cache.
	// This configuration option is not available for the textual representation of
	// the repository specification
	Representation vfs.FileSystem `json:"-"`
	// File is an opened file object to use instead of the path and path filesystem
	// It should never be closed if given to support temporary files
	File vfs.File `json:"-"`
	// Reader provides a one time access to the content (archive content only)
	// The resulting access is therefore temporary and cannot be written back
	// to its origin, but to other destinations.
	// The reader must be closed by the provider.
	Reader io.Reader `json:"-"`
}

func (*StandardOptions) ApplyOption

func (o *StandardOptions) ApplyOption(options Options) error

func (*StandardOptions) Default

func (o *StandardOptions) Default(fss ...vfs.FileSystem)

func (*StandardOptions) DefaultForPath

func (o *StandardOptions) DefaultForPath(path string) error

func (*StandardOptions) DefaultFormat

func (o *StandardOptions) DefaultFormat(fmt FileFormat)

func (*StandardOptions) GetFile

func (o *StandardOptions) GetFile() vfs.File

func (*StandardOptions) GetFileFormat

func (o *StandardOptions) GetFileFormat() *FileFormat

func (*StandardOptions) GetPathFileSystem

func (o *StandardOptions) GetPathFileSystem() vfs.FileSystem

func (*StandardOptions) GetReader

func (o *StandardOptions) GetReader() io.Reader

func (*StandardOptions) GetRepresentation

func (o *StandardOptions) GetRepresentation() vfs.FileSystem

func (*StandardOptions) SetFile

func (o *StandardOptions) SetFile(file vfs.File)

func (*StandardOptions) SetFileFormat

func (o *StandardOptions) SetFileFormat(format FileFormat)

func (*StandardOptions) SetPathFileSystem

func (o *StandardOptions) SetPathFileSystem(fs vfs.FileSystem)

func (*StandardOptions) SetReader

func (o *StandardOptions) SetReader(r io.Reader)

func (*StandardOptions) SetRepresentation

func (o *StandardOptions) SetRepresentation(fs vfs.FileSystem)

func (*StandardOptions) ValidForPath

func (o *StandardOptions) ValidForPath(path string) error

func (*StandardOptions) WriterFor

func (o *StandardOptions) WriterFor(path string, mode vfs.FileMode) (io.WriteCloser, error)

type StaticAllocatable

type StaticAllocatable struct{}

func (StaticAllocatable) Ref

func (_ StaticAllocatable) Ref() error

func (StaticAllocatable) Unref

func (_ StaticAllocatable) Unref() error

type Writer

type Writer interface {
	io.Writer
	io.WriterAt
}

Directories

Path Synopsis
s3

Jump to

Keyboard shortcuts

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