public function run() { $this->temporaryDirectory = TemporaryDirectory::create(); try { if (!count($this->backupDestinations)) { throw InvalidBackupJob::noDestinationsSpecified(); } $manifest = $this->createBackupManifest(); if (!$manifest->count()) { throw InvalidBackupJob::noFilesToBeBackedUp(); } $zipFile = $this->createZipContainingEveryFileInManifest($manifest); $this->copyToBackupDestinations($zipFile); } catch (Exception $exception) { consoleOutput()->error("Backup failed because {$exception->getMessage()}." . PHP_EOL . $exception->getTraceAsString()); event(new BackupHasFailed($exception)); } $this->temporaryDirectory->delete(); }