luci: go.chromium.org/luci/cipd/client/cipd/reader Index | Files

package reader

import "go.chromium.org/luci/cipd/client/cipd/reader"

Package reader implements reading contents of a CIPD package.

Index

Package Files

calc_pin.go reader.go

Variables

var ErrHashMismatch = errors.New("package hash mismatch")

ErrHashMismatch is an error when package hash doesn't match.

func CalculatePin Uses

func CalculatePin(ctx context.Context, body io.ReadSeeker, algo api.HashAlgo) (common.Pin, error)

CalculatePin returns a pin that represents the package.

It reads the package name from the manifest inside, and calculates package's hash to get instance ID.

func ExtractFiles Uses

func ExtractFiles(ctx context.Context, files []fs.File, dest fs.Destination, withManifest pkg.ManifestMode) error

ExtractFiles extracts all given files into a destination, with a progress report.

This function has intimate understanding of specifics of CIPD packages, such as manifest files and .cipdpkg/* directory, thus it should be used only when extracting files from CIPD packages.

If withManifest is WithManifest, the manifest file is required to be among 'files'. It will be extended with information about extracted files and placed into the destination.

If withManifest is WithoutManifest, the function will fail if the manifest is among 'files' (as a precaution against unintended override of manifests).

func ExtractFilesTxn Uses

func ExtractFilesTxn(ctx context.Context, files []fs.File, dest fs.TransactionalDestination, withManifest pkg.ManifestMode) (err error)

ExtractFilesTxn is like ExtractFiles, but it also opens and closes the transaction over fs.TransactionalDestination object.

It guarantees that if extraction fails for some reason, there'll be no garbage laying around.

func IsCorruptionError Uses

func IsCorruptionError(err error) bool

IsCorruptionError returns true iff err indicates corruption.

func OpenInstance Uses

func OpenInstance(ctx context.Context, r pkg.Source, opts OpenInstanceOpts) (pkg.Instance, error)

OpenInstance opens a package instance by reading it from the given source.

The caller is responsible for closing the instance when done with it.

On success it takes ownership of the source, closing it when the instance itself is closed. On errors the source is left open. It's a responsibility of the caller to close it in this case.

func OpenInstanceFile Uses

func OpenInstanceFile(ctx context.Context, path string, opts OpenInstanceOpts) (pkg.Instance, error)

OpenInstanceFile opens a package instance by reading it from a file on disk.

The caller is responsible for closing the instance when done with it. This will close the underlying file too.

type OpenInstanceOpts Uses

type OpenInstanceOpts struct {
    // VerificationMode specifies what to do with the hash of the instance file.
    //
    // Passing VerifyHash instructs OpenPackage to calculate the hash of the
    // instance file using the hash algorithm matching InstanceID, and then
    // compare the resulting digest to InstanceID, failing on mismatch with
    // ErrHashMismatch. HashAlgo is ignored in this case and should be 0.
    //
    // Passing SkipHashVerification instructs OpenPackage to unconditionally
    // trust the given InstanceID. HashAlgo is also ignored in this case and
    // should be 0.
    //
    // Passing CalculateHash instructs OpenPackage to calculate the hash of the
    // instance file using the given HashAlgo, and use the resulting digest
    // as an instance ID of the new pkg.Instance object. InstanceID is ignored
    // in this case and should be "".
    VerificationMode VerificationMode

    // InstanceID encodes the expected hash of the instance file.
    //
    // May be empty. See the comment for VerificationMode for more details.
    InstanceID string

    // HashAlgo specifies what hashing algorithm to use for computing instance ID.
    //
    // May be empty. See the comment for VerificationMode for more details.
    HashAlgo api.HashAlgo
}

OpenInstanceOpts is passed to OpenInstance and OpenInstanceFile.

type VerificationMode Uses

type VerificationMode int

VerificationMode defines whether to verify hash or not.

const (
    // VerifyHash instructs OpenPackage to calculate the hash of the package file
    // and compare it to the given InstanceID.
    VerifyHash VerificationMode = 0

    // SkipHashVerification instructs OpenPackage to skip the hash verification
    // and trust that the given InstanceID matches the package.
    SkipHashVerification VerificationMode = 1

    // CalculateHash instructs OpenPackage to calculate the hash of the package
    // file using the given hash algo, and use it as a new instance ID.
    CalculateHash VerificationMode = 2
)

Package reader imports 19 packages (graph) and is imported by 3 packages. Updated 2018-12-14. Refresh now. Tools for package owners.