archive

package
v0.5.1 Latest Latest
Warning

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

Go to latest
Published: Aug 29, 2026 License: MIT Imports: 28 Imported by: 0

Documentation

Overview

Package archive reads archive / container formats — tar (and compressed tar), zip, 7z, rar, cpio, asar, rpm, deb and OCI image layouts — and exposes a uniform list/open surface over them. Formats are identified by content, not filename extension (see Detect), so a misnamed file still opens correctly.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Detect

func Detect(path string) (string, error)

Detect classifies an archive by its header, returning a format name ("tar", "zip", "asar", "rpm", ...) or "" when the file is not a recognized archive.

func IsOCILayout

func IsOCILayout(path string) bool

IsOCILayout reports whether path is a directory containing an OCI image layout (an oci-layout file plus an index.json). An OCI layout is read through the same archive pipeline as docker save archives, so it is a directory rather than a disk image. The single-file variant (oci-archive, e.g. `podman save --format oci` or a flatpak bundle) is a tar handled by openOCITar.

Types

type Archive

type Archive interface {
	List() ([]Entry, error)
	Open(name string) (io.ReadCloser, int64, error)
}

Archive is an opened archive: List enumerates its members, Open streams one member's contents.

func Open

func Open(path string) (Archive, error)

Open opens an archive, dispatching on content rather than filename extension.

type Entry

type Entry struct {
	Name     string
	Size     int64
	Kind     fsview.Kind
	Mode     int64 // permission + setuid/setgid/sticky bits (tar-style low 12 bits)
	ModTime  time.Time
	UID      int
	GID      int
	Uname    string
	Gname    string
	Linkname string
}

Entry describes one member of an archive.

Jump to

Keyboard shortcuts

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