dgd-backupper-php/app/Utils/Builder.php

146 lines
2.9 KiB
PHP

<?php
namespace App\Utils;
use \AdamBrett\ShellWrapper\Command\Builder as CommandBuilder;
use App\Exceptions\BackupFolderNotFoundException;
use App\Exceptions\CleanException;
use Throwable;
abstract class Builder
{
private $backupFolder;
private $exportFolder;
private $targetFolder;
private $containerName;
private $packageName;
private $clean;
/**
* Builder constructor.
*/
public function __construct()
{
$this->clean = false;
}
public function __destruct()
{
try {
if ($this->clean) {
$files = glob($this->backupFolder . '/*');
foreach($files as $file){
is_file($file) ? unlink($file) : null;
}
}
} catch (\Exception $exception) {
throw new CleanException($exception->getMessage());
}
}
/**
* @param $backupFolder
* @return Builder
* @throws Throwable
*/
public function setBackupFolder($backupFolder): Builder
{
throw_if(!file_exists($backupFolder), new BackupFolderNotFoundException('Backup folder not exist!'));
$this->backupFolder = $backupFolder;
return $this;
}
/**
* @return string
*/
public function getBackupFolder(): string
{
return $this->backupFolder;
}
/**
* @param string $exportFolder
* @return Builder
*/
public function setExportFolder(string $exportFolder): Builder
{
$this->exportFolder = $exportFolder;
return $this;
}
/**
* @return string
*/
public function getExportFolder(): string
{
return $this->exportFolder;
}
/**
* @param $containerName
* @return Builder
*/
public function setContainerName($containerName): Builder
{
$this->containerName = $containerName;
return $this;
}
/**
* @param string $targetFolder
* @return Builder
*/
public function setTargetFolder(string $targetFolder): Builder
{
$this->targetFolder = $targetFolder;
return $this;
}
/**
* @return string
*/
public function getTargetFolder(): string
{
return $this->targetFolder;
}
/**
* @return string
*/
public function getContainerName(): string
{
return $this->containerName;
}
/**
* @param string $packageName
* @return Builder
*/
public function setPackageName(string $packageName): Builder
{
$this->packageName = $packageName;
return $this;
}
/**
* @return string
*/
public function getPackageName(): string
{
return $this->packageName;
}
/**
* @param bool $clean
*/
public function setClean(bool $clean): void
{
$this->clean = $clean;
}
/**
* @return CommandBuilder
*/
abstract public function builder(): CommandBuilder;
}