diff --git a/app/Commands/BackupCommand.php b/app/Commands/BackupCommand.php index e29e825..066d272 100644 --- a/app/Commands/BackupCommand.php +++ b/app/Commands/BackupCommand.php @@ -15,7 +15,7 @@ class BackupCommand extends Command * * @var string */ - protected $signature = 'backup {containers*} {--data} {--mysql} {--upload}'; + protected $signature = 'backup {containers*} {--data} {--mysql} {--upload} {--clean}'; /** * The description of the command. @@ -47,6 +47,14 @@ class BackupCommand extends Command '--password' => env('MYSQL_PASSWORD'), ]); } + + if ($this->option('clean')) { + $files = glob(env('BACKUP_FOLDER') . '/*'); + foreach($files as $file){ + is_file($file) ? unlink($file) : null; + } + } + $this->line("|-> The backup and upload process is finished."); return; } diff --git a/app/Commands/ContainerBackupCommand.php b/app/Commands/ContainerBackupCommand.php index af6323f..c8a6229 100644 --- a/app/Commands/ContainerBackupCommand.php +++ b/app/Commands/ContainerBackupCommand.php @@ -33,13 +33,14 @@ class ContainerBackupCommand extends Command public function handle() { $containers = $this->argument('containers'); - $bm = new BackupManager(); + $backupManager = new BackupManager(); + $backupManager->setBackupFolder(env('BACKUP_FOLDER')); foreach ($containers as $container) { $this->line("|-> Backing up {$container}..."); $builder = new ContainerBuilder(); - $builder->setBackupFolder(env('BACKUP_FOLDER'))->setContainerName($container); - $bm->setBuilder($builder)->execute(); - if ($bm->getShell()->getReturnValue() == 0) { + $builder->setContainerName($container); + $backupManager->setBuilder($builder)->execute(); + if ($backupManager->getShell()->getReturnValue() == 0) { $this->line(" |-> {$container} successfully backed up."); } else { $this->line(" |-> {$container} could not be backed up."); diff --git a/app/Commands/DataBackupCommand.php b/app/Commands/DataBackupCommand.php index 1df1990..d2abd96 100644 --- a/app/Commands/DataBackupCommand.php +++ b/app/Commands/DataBackupCommand.php @@ -36,9 +36,9 @@ class DataBackupCommand extends Command $bm = new BackupManager(); $builder = new DataBuilder(); - $builder->setDataFolder(env('DATA_FOLDER')) - ->setBackupFolder(env('BACKUP_FOLDER')); - $bm->setBuilder($builder)->execute(); + $builder->setDataFolder(env('DATA_FOLDER')); + $bm->setBackupFolder(env('BACKUP_FOLDER')) + ->setBuilder($builder)->execute(); if ($bm->getShell()->getReturnValue() == 0) { $this->line(" |-> Data folder successfully backed up."); diff --git a/app/Commands/MysqlBackupCommand.php b/app/Commands/MysqlBackupCommand.php index 17bada1..83a88d4 100644 --- a/app/Commands/MysqlBackupCommand.php +++ b/app/Commands/MysqlBackupCommand.php @@ -44,9 +44,11 @@ class MysqlBackupCommand extends Command $builder = new DatabaseBuilder(); $builder->setCredential($credentials); - $builder->setBackupFolder(env('BACKUP_FOLDER')) - ->setContainerName($container); - $bm->setBuilder($builder)->execute(); + $builder->setContainerName($container); + + $bm->setBackupFolder(env('BACKUP_FOLDER')) + ->setBuilder($builder)->execute(); + if ($bm->getShell()->getReturnValue() == 0) { $this->line(" |-> Mysql databases successfully backed up."); } else { diff --git a/app/Utils/BackupManager.php b/app/Utils/BackupManager.php index dd3ea8c..b8b7ae1 100644 --- a/app/Utils/BackupManager.php +++ b/app/Utils/BackupManager.php @@ -2,7 +2,6 @@ namespace App\Utils; -use AdamBrett\ShellWrapper\Command\Builder as CommandBuilder; use AdamBrett\ShellWrapper\Runners\Exec; use App\Exceptions\BackupFolderNotFoundException; use App\Exceptions\ExportFolderNotFoundException; @@ -11,19 +10,14 @@ use Throwable; class BackupManager { private $exportFolder; - private $dataFolder; private $backupFolder; private $shell; - private $params; private $builder; private $containerName; public function __construct() { $this->shell = new Exec(); - $this->builder = new CommandBuilder(""); - $this->backupFolder = "."; - $this->exportFolder = "."; } /** @@ -38,18 +32,6 @@ class BackupManager return $this; } - /** - * @param mixed $dataFolder - * @return BackupManager - * @throws Throwable - */ - public function setDataFolder($dataFolder): BackupManager - { - throw_if(!file_exists($dataFolder), new BackupFolderNotFoundException('Data folder not exist!')); - $this->dataFolder = $dataFolder; - return $this; - } - /** * @param mixed $exportFolder * @return BackupManager @@ -62,34 +44,6 @@ class BackupManager return $this; } - /** - * @param $param - * @return BackupManager - */ - public function addParams(array $params): BackupManager - { - $this->params = $params; - return $this; - } - - /** - * @param mixed $containerName - * @return BackupManager - */ - public function setContainerName($containerName): BackupManager - { - $this->containerName = $containerName; - return $this; - } - - /** - * @return mixed - */ - public function getParams() - { - return $this->params; - } - /** * @return Exec */ @@ -106,14 +60,6 @@ class BackupManager return $this->backupFolder; } - /** - * @return mixed - */ - public function getDataFolder() - { - return $this->dataFolder; - } - /** * @return mixed */ @@ -130,36 +76,24 @@ class BackupManager return $this->containerName; } - /* - * @param int $mode - * @return BackupManager - */ - /*public function builder(int $mode): BackupManager - { - switch ($mode) { - case BuilderMode::CONTAINER: - $this->builder = new Builder("docker export {$this->containerName} -o {$this->backupFolder}/{$this->containerName}.tar.gz"); - break; - case BuilderMode::DATA: - $this->builder = new Builder("tar -zcf"); - break; - case BuilderMode::MYSQL: - $this->builder = new Builder("docker exec"); - break; - default: - $this->builder = new Builder(""); - } - return $this; - }*/ - public function setBuilder(Builder $builder): BackupManager { - $this->builder = $builder->builder(); + $this->builder = $builder; return $this; } + public function getBuilder(): Builder + { + return $this->builder; + } + + /** + * @return string + * @throws Throwable + */ public function execute() { - return $this->shell->run($this->builder); + $builder = $this->getBuilder()->setBackupFolder($this->backupFolder)->builder(); + return $this->shell->run($builder); } }