DNDataArchive::setArchiveFromFiles PHP Method

setArchiveFromFiles() public method

Use GZIP=-1 for less compression on assets, which are already heavily compressed to begin with.
public setArchiveFromFiles ( string | null $workingDir ) : boolean
$workingDir string | null The path of where the sspak has been extracted to
return boolean
    public function setArchiveFromFiles($workingDir)
    {
        $commands = array();
        if ($this->Mode == 'db') {
            if (file_exists($workingDir . '/database.sql')) {
                $commands[] = 'gzip database.sql';
            }
            $commands[] = sprintf('tar -cf %s database.sql.gz', $this->ArchiveFile()->FullPath);
            $commands[] = 'rm -f database.sql.gz';
        } elseif ($this->Mode == 'assets') {
            $commands[] = 'GZIP=-1 tar --dereference -czf assets.tar.gz assets';
            $commands[] = sprintf('tar -cf %s assets.tar.gz', $this->ArchiveFile()->FullPath);
            $commands[] = 'rm -f assets.tar.gz';
        } else {
            if (file_exists($workingDir . '/database.sql')) {
                $commands[] = 'gzip database.sql';
            }
            $commands[] = 'GZIP=-1 tar --dereference -czf assets.tar.gz assets';
            $commands[] = sprintf('tar -cf %s database.sql.gz assets.tar.gz', $this->ArchiveFile()->FullPath);
            $commands[] = 'rm -f database.sql.gz assets.tar.gz';
        }
        $process = new AbortableProcess(implode(' && ', $commands), $workingDir);
        $process->setTimeout(3600);
        $process->run();
        if (!$process->isSuccessful()) {
            throw new RuntimeException($process->getErrorOutput());
        }
        $this->write();
        return true;
    }