Skip to content

Innmind/encoding

Repository files navigation

Encoding

Build Status codecov Type Coverage

This packages allows to encode and compress files and directories without the need for them to be written to the filesystem and never loaded entirely in memory.

Note Each file contained in a tar file can't exceed an 8Go size.

Installation

composer require innmind/encoding

Usage

use Innmind\Filesystem\{
    Adapter\Filesystem,
    Name,
};
use Innmind\TimeContinuum\Clock;
use Innmind\Url\Path;
use Innmind\Encoding\{
    Gzip,
    Tar,
};

$adapter = Filesystem::mount(Path::of('some/directory/'));
$tar = $adapter
    ->get(Name::of('data'))
    ->map(Tar::encode(Clock::live()))
    ->map(Gzip::compress())
    ->match(
        static fn($file) => $file,
        static fn() => null,
    );

Here $tar represents a .tar.gz file content containing all the files and directories from some/directory/data/, unless the data doesn't exist then it is null.

Documentation

Full documentation can be found at https://innmind.org/encoding/.