GzipCompressor   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 15
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
wmc 2
lcom 0
cbo 3
dl 0
loc 15
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A compress() 0 11 2
1
<?php
2
3
namespace LilyLabs\DBBackup;
4
5
use LilyLabs\DBBackup\Contracts\BackupFileCompressor;
6
use LilyLabs\DBBackup\Contracts\BackupFile;
7
use Symfony\Component\Process\Process;
8
use Symfony\Component\Process\Exception\ProcessFailedException;
9
use Exception;
10
11
/**
12
 * Compresses a backup file using Gzip
13
 * 
14
 * @package LilyLabs\DBBackup
15
 * @author Abraham Chávez
16
 */
17
class GzipCompressor implements BackupFileCompressor
18
{
19
    
20
    public function compress(BackupFile $backup_file) : BackupFile
21
    {
22
        $filepath = $backup_file->path();
23
        $process = new Process("gzip -f {$filepath}");
24
        try {
25
            $process->mustRun();
26
            return new DBBackupFile($backup_file->dirname()."/".$backup_file->basename().".gz");
27
        } catch (ProcessFailedException $exception) {
28
            throw new Exception($process->getErrorOutput());
29
        }
30
    }
31
}