...

Package compression

import "github.com/google/go-containerregistry/internal/compression"
Overview
Index

Overview ▾

Package compression abstracts over gzip and zstd.

func GetCompression

func GetCompression(opener Opener) (compression.Compression, error)

GetCompression detects whether an Opener is compressed and which algorithm is used.

type Opener

Opener represents e.g. opening a file.

type Opener = func() (io.ReadCloser, error)

type PeekReader

PeekReader is an io.Reader that also implements Peek a la bufio.Reader.

type PeekReader interface {
    io.Reader
    Peek(n int) ([]byte, error)
}

func PeekCompression

func PeekCompression(r io.Reader) (compression.Compression, PeekReader, error)

PeekCompression detects whether the input stream is compressed and which algorithm is used.

If r implements Peek, we will use that directly, otherwise a small number of bytes are buffered to Peek at the gzip/zstd header, and the returned PeekReader can be used as a replacement for the consumed input io.Reader.