146 lines
2.9 KiB
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;
|
|
}
|