Documentation ¶
Index ¶
- Constants
- func AddDecompressor(name string, comp Decompressor)
- func DetectArchiveCompression(r io.Reader) (*tar.Reader, error)
- type Bzip2Decompressor
- type Compression
- type Decompressor
- type DirStack
- type GzipDecompressor
- type Tar
- type TarCustomHandler
- type TarCustomHook
- type Untar
- type UntarCustomHandler
- type UserOption
Constants ¶
const ( NONE = Compression("") BZIP2 = Compression("bzip2") GZIP = Compression("gzip") DETECT = Compression("detect") WindowsMaxPathLen = 260 // characters )
Variables ¶
This section is empty.
Functions ¶
func AddDecompressor ¶
func AddDecompressor(name string, comp Decompressor)
Types ¶
type Bzip2Decompressor ¶
type Bzip2Decompressor struct{}
type Decompressor ¶
type DirStack ¶
type DirStack []string
DirStack tracks circular symbolic links for the dereference archive option. Declaring a type here to highlight the semantics.
type GzipDecompressor ¶
type GzipDecompressor struct{}
type Tar ¶
type Tar struct { // The Compression being used in this tar. Compression Compression // Set to true if archiving should attempt to preserve // permissions as it was on the filesystem. If this is false then // files will be archived with basic file/directory permissions. IncludePermissions bool // Set to true to perserve ownership of files and directories. If set to // false, the Uid and Gid will be set as 500, which is the first Uid/Gid // reserved for normal users. IncludeOwners bool // If set, this will be a virtual path that is prepended to the // file location. This allows the target to be under a temp directory // but have it packaged as though it was under another directory, such as // taring /tmp/build, and having // /tmp/build/bin/foo be /var/lib/build/bin/foo // in the tar archive. VirtualPath string // OwnerMappingFunc is used to give the caller the ability to control the // mapping of UIDs in the tar into what they should be on the host. The // function is only used when IncludeOwners is true. The function is passed in // the UID of the file on the filesystem and is expected to return a UID to // use within the tar file. It can also return an error if it is unable to // choose a UID or the UID is not allowed. OwnerMappingFunc func(int) (int, error) // GroupMappingFunc is used to give the caller the ability to control the // mapping of GIDs in the tar into what they should be on the host. The // function is only used when IncludeOwners is true. The function is passed in // the GID of the file on the filesystem and is expected to return a GID to // use within the tar file. It can also return an error if it is unable to // choose a GID or the GID is not allowed. GroupMappingFunc func(int) (int, error) // ExcludeRootPath ensures the resulting tarball does not include // a header entry for "./". This prevents untarring from modifying // the parent directory. ExcludeRootPath bool // User provided control options. UserOption enum has the // definitions and explanations for the various flags. UserOptions UserOption // CustomHandlers is used to allow the code calling tarhelper to inject custom // logic for how to handle certain entries being written to the tar file. The // Tar handler will loop over and call to these functions. They return a // boolean which should be true when the built in logic for handling the file // should be skipped. They also return an error which will cause the tar // function to abort and bubble up the handler's error. The functions are // passed the path where the entry are located on disk, the os.FileInfo for // the file, and the *tar.Header entry for it. CustomHandlers []TarCustomHandler // PrefixHook executes before the file system is traversed and can be used to inject // content into the archive which does not exist within the file system tree. This // content will be extracted before any file system data. PrefixHook TarCustomHook // SuffixHook executes after the file system is traversed and like PrefixHook can be // used to inject additional content into the archive. This content will be extracted // after data from the file system. SuffixHook TarCustomHook // contains filtered or unexported fields }
Tar manages state for a TAR archive.
func (*Tar) ExcludePath ¶
ExcludePath appends a path, file, or pattern relative to the toplevel path to be archived that is then excluded from the final archive. pathRE is a regex that will be anchored at the start and end then applied to the entire filename (full path and basename)
func (*Tar) ExcludeRegexp ¶
ExcludeRegexp adds a Regexp into the list to consider when selectiong files to exclude. Files or directories matching the regexp will be excluded, even if they matched a previous Regexp from IncludeRegexp. Files are only considered a match if they match the Regexp and isDir is false.
func (*Tar) IncludePath ¶
IncludePath appends a path, file, or pattern relative to the toplevel path to be archived that is then excluded from the final archive. pathRE is a regex that will be anchored at the start and end then applied to the entire filename (full path and basename)
func (*Tar) IncludeRegexp ¶
IncludeRegexp adds a Regexp into the list to consider when selectiong files to exclude. Files or directories matching the regexp will _not_ be excluded, even if they matched a previous Regexp. Files are only considered a match if they match the Regexp and isDir is false.
type TarCustomHandler ¶
TarCustomHandler are used to inject custom behavior for handling file entries going into a tar file. For more information, see Tar.CustomerHandlers description.
type TarCustomHook ¶
TarCustomHook can inject additional header and file data into the archive. For more information, see Tar.PrefixHook and Tar.SuffixHook.
type Untar ¶
type Untar struct { // The AbsoluteRoot is intended to be the root of the target and allows us // to create files that follow through links that are absolute paths, but // ensure the file is created relative to the AbsoluteRoot and not the root // on the host system. AbsoluteRoot string // The Compression being used in this tar. Compression Compression // Set to true if extraction should attempt to preserve // permissions as recorded in the tar file. If this is false then // files will be created with a default of 755 for directories and 644 // for files. PreservePermissions bool // Set to true if extraction should attempt to restore owners of files // and directories from the archive. Any Uid/Gid over 500 will be set // to the MappedUserID/MappedGroupID setting. If this is set to false // it will default to all files going to the MappedUserID/MappedGroupID. PreserveOwners bool // SkipSpecialDevices can be used to skip extracting special devices defiend // within the tarball. This includes things like character or block devices. SkipSpecialDevices bool // The default UID to set files with an owner over 500 to. If PreserveOwners // is false, this will be the UID assigned for all files in the archive. // This defaults to the UID of the current running user. MappedUserID int // The default GID to set files with an owner over 500 to. If PreserveOwners // is false, this will be the GID assigned for all files in the archive. // This defaults to the GID of the current running user. MappedGroupID int // IncludedPermissionMask is combined with the uploaded file mask as a way to // ensure a base level of permissions for all objects. IncludedPermissionMask os.FileMode // PathWhitelist provides a list of files that will only be extracted from the // provided tarball. If PathWhitelist is not set, then all files will be // allowed. If it is set, then only files matching the specified files // (/etc/file) or directories (/etc/dir/) will be allowed. PathWhitelist []string // OwnerMappingFunc is used to give the caller the ability to control the // mapping of UIDs in the tar into what they should be on the host. It is only // used when PreserveOwners is true. The function is passed in the UID of the // file being extracted and is expected to return a UID to use for the actual // file. It can also return an error if it is unable to choose a UID or the // UID is not allowed. OwnerMappingFunc func(int) (int, error) // GroupMappingFunc is used to give the caller the ability to control the // mapping of GIDs in the tar into what they should be on the host. It is only // used when PreserveOwners is true. The function is passed in the GID of the // file being extracted and is expected to return a GID to use for the actual // file. It can also return an error if it is unable to choose a GID or the // GID is not allowed. GroupMappingFunc func(int) (int, error) // CustomHandlers is used to allow the code calling tarhelper to inject custom // logic for how to handle certain entries within the tar file. The Untar // handler will loop over and call to these functions. They return a boolean // which should be true when the built in logic for handling the tar entry // should be skipped. They also return an error which will cause the untar // function to abort and bubble up the handler's error. The functions are // passed the root path where the tar is being extracted on disk, the // *tar.Header entry, and an io.Reader to the entry's contents (if it is a // file). CustomHandlers []UntarCustomHandler // contains filtered or unexported fields }
Untar manages state of a TAR archive to be extracted.
type UntarCustomHandler ¶
UntarCustomHandler are used to inject custom behavior for handling in a tar file. For more information, see Untar.CustomerHandlers description.
type UserOption ¶
type UserOption int
User options enumeration type. This encodes the control options provided by user.