From a8cdffa95c067b2758671e638481817bbd4cb8da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Molakvo=C3=A6?= Date: Thu, 9 Dec 2021 16:52:15 +0100 Subject: [PATCH] Allow to delete non-migrated previews instead of moving them MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: John Molakvoæ --- core/Command/Preview/Repair.php | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/core/Command/Preview/Repair.php b/core/Command/Preview/Repair.php index 8c83ce2ebead7..e9eefc1d2dbb8 100644 --- a/core/Command/Preview/Repair.php +++ b/core/Command/Preview/Repair.php @@ -76,7 +76,8 @@ protected function configure() { ->setName('preview:repair') ->setDescription('distributes the existing previews into subfolders') ->addOption('batch', 'b', InputOption::VALUE_NONE, 'Batch mode - will not ask to start the migration and start it right away.') - ->addOption('dry', 'd', InputOption::VALUE_NONE, 'Dry mode - will not create, move or delete any files - in combination with the verbose mode one could check the operations.'); + ->addOption('dry', 'd', InputOption::VALUE_NONE, 'Dry mode - will not create, move or delete any files - in combination with the verbose mode one could check the operations.') + ->addOption('delete', null, InputOption::VALUE_NONE, 'Delete instead of migrating them. Usefull if too many entries to migrate.'); } protected function execute(InputInterface $input, OutputInterface $output): int { @@ -94,10 +95,15 @@ protected function execute(InputInterface $input, OutputInterface $output): int } $dryMode = $input->getOption('dry'); + $deleteMode = $input->getOption('delete'); + if ($dryMode) { $output->writeln("INFO: The migration is run in dry mode and will not modify anything."); $output->writeln(""); + } elseif ($deleteMode) { + $output->writeln("WARN: The migration will _DELETE_ old previews."); + $output->writeln(""); } $instanceId = $this->config->getSystemValueString('instanceid'); @@ -250,16 +256,29 @@ protected function execute(InputInterface $input, OutputInterface $output): int $progressBar->advance(); continue; } - $section1->writeln(" Move preview/$name/$previewName to preview/$newFoldername", OutputInterface::VERBOSITY_VERBOSE); + + // Execute process if (!$dryMode) { - try { - $preview->move("appdata_$instanceId/preview/$newFoldername/$previewName"); - } catch (\Exception $e) { - $this->logger->logException($e, ['app' => 'core', 'message' => "Failed to move preview from preview/$name/$previewName to preview/$newFoldername"]); + // Delete preview instead of moving + if ($deleteMode) { + try { + $section1->writeln(" Delete preview/$name/$previewName", OutputInterface::VERBOSITY_VERBOSE); + $preview->delete(); + } catch (\Exception $e) { + $this->logger->logException($e, ['app' => 'core', 'message' => "Failed to delete preview at preview/$name/$previewName"]); + } + } else { + try { + $section1->writeln(" Move preview/$name/$previewName to preview/$newFoldername", OutputInterface::VERBOSITY_VERBOSE); + $preview->move("appdata_$instanceId/preview/$newFoldername/$previewName"); + } catch (\Exception $e) { + $this->logger->logException($e, ['app' => 'core', 'message' => "Failed to move preview from preview/$name/$previewName to preview/$newFoldername"]); + } } } } } + if ($oldPreviewFolder->getDirectoryListing() === []) { $section1->writeln(" Delete empty folder preview/$name", OutputInterface::VERBOSITY_VERBOSE); if (!$dryMode) {