# NAME

Path::Tiny::Archive::Tar - Tar/untar add-on for file path utility

# VERSION

version 0.001

# SYNOPSIS

   use Path::Tiny
   use Path::Tiny::Archive::Tar qw( :const );

   path("foo/bar.txt")->tar("foo/bar.tgz", COMPRESSION_GZIP);
   path("foo/bar.zip")->untar("baz");

# DESCRIPTION

This module provides two additional methods for [Path::Tiny](https://metacpan.org/pod/Path::Tiny) for working with
tar archives.

# METHODS

## tar

   path("/tmp/foo.txt")->tar("/tmp/foo.tar");
   path("/tmp/foo")->tar("/tmp/foo.tar");

Creates a tar archive and appends a file or directory tree to it. Returns the
path to the archive or undef.

You can choose different compression types and levels.

   path("/tmp/foo")->zip("/tmp/foo.tgz", COMPRESSION_GZIP);

The types and levels given can be:

- `COMPRESSION_NONE`: No compression. This is the type that will be used
if not specified.
- `COMPRESSION_GZIP`: Compress using `gzip`.
   - `0` to `9`: This is `gzip` compression levels. 1 gives the best
   speed and worst compression, and 9 gives the best compression and worst speed.
   0 is no compression.
   - `COMPRESSION_GZIP_NONE`: This is a synonym for `gzip` level 0.
   - `COMPRESSION_GZIP_FASTEST`: This is a synonym for `gzip` level 1.
   - `COMPRESSION_GZIP_BEST`: This is a synonym for `gzip` level 9.
   - `COMPRESSION_GZIP_DEFAULT`: This gives a good compromise between speed
   and compression for `gzip`, and is currently equivalent to 6 (this is in the
   zlib code). This is a synonym for `COMPRESSION_GZIP`.
- `COMPRESSION_BZIP2`: Compress using `bzip2`.

## untar

   path("/tmp/foo.tar")->untar("/tmp/foo");

Extracts a tar archive to specified directory. Returns the path to the
destination directory or undef.

# AUTHOR

Denis Ibaev <[email protected]>

# COPYRIGHT AND LICENSE

This software is copyright (c) 2021 by Denis Ibaev.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.