shell = new Exec(); $this->builder = new CommandBuilder(""); $this->backupFolder = "."; $this->exportFolder = "."; } /** * @param mixed $backupFolder * @return BackupManager * @throws Throwable */ public function setBackupFolder($backupFolder): BackupManager { throw_if(!file_exists($backupFolder), new BackupFolderNotFoundException('Backup folder not exist!')); $this->backupFolder = $backupFolder; 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 * @throws Throwable */ public function setExportFolder($exportFolder): BackupManager { throw_if(!file_exists($exportFolder), new ExportFolderNotFoundException('Export folder not exist!')); $this->exportFolder = $exportFolder; 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 */ public function getShell(): Exec { return $this->shell; } /** * @return mixed */ public function getBackupFolder() { return $this->backupFolder; } /** * @return mixed */ public function getDataFolder() { return $this->dataFolder; } /** * @return mixed */ public function getExportFolder() { return $this->exportFolder; } /** * @return mixed */ public function getContainerName() { 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(); return $this; } public function execute() { return $this->shell->run($this->builder); } }