mirror of
https://github.com/wallabag/wallabag.git
synced 2024-11-24 01:51:01 +00:00
Remove username argument and add a dry-run option
This commit is contained in:
parent
c7a8800794
commit
478c20d3a4
1 changed files with 25 additions and 30 deletions
|
@ -2,10 +2,9 @@
|
||||||
|
|
||||||
namespace Wallabag\CoreBundle\Command;
|
namespace Wallabag\CoreBundle\Command;
|
||||||
|
|
||||||
use Doctrine\ORM\NoResultException;
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
|
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
|
||||||
use Symfony\Component\Console\Input\InputArgument;
|
|
||||||
use Symfony\Component\Console\Input\InputInterface;
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
|
use Symfony\Component\Console\Input\InputOption;
|
||||||
use Symfony\Component\Console\Output\OutputInterface;
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
use Symfony\Component\Console\Style\SymfonyStyle;
|
use Symfony\Component\Console\Style\SymfonyStyle;
|
||||||
use Symfony\Component\Finder\Finder;
|
use Symfony\Component\Finder\Finder;
|
||||||
|
@ -23,10 +22,11 @@ class CleanDownloadedImagesCommand extends ContainerAwareCommand
|
||||||
$this
|
$this
|
||||||
->setName('wallabag:clean-downloaded-images')
|
->setName('wallabag:clean-downloaded-images')
|
||||||
->setDescription('Cleans downloaded images which are no more associated to an entry')
|
->setDescription('Cleans downloaded images which are no more associated to an entry')
|
||||||
->addArgument(
|
->addOption(
|
||||||
'username',
|
'dry-run',
|
||||||
InputArgument::OPTIONAL,
|
null,
|
||||||
'User to clean'
|
InputOption::VALUE_NONE,
|
||||||
|
'Do not remove images, just dump counters'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,34 +34,26 @@ class CleanDownloadedImagesCommand extends ContainerAwareCommand
|
||||||
{
|
{
|
||||||
$this->io = new SymfonyStyle($input, $output);
|
$this->io = new SymfonyStyle($input, $output);
|
||||||
|
|
||||||
$username = $input->getArgument('username');
|
$dryRun = (bool) $input->getOption('dry-run');
|
||||||
|
|
||||||
if ($username) {
|
|
||||||
try {
|
|
||||||
$user = $this->getContainer()->get('wallabag_user.user_repository')->findOneByUserName($username);
|
|
||||||
$this->clean($user);
|
|
||||||
} catch (NoResultException $e) {
|
|
||||||
$this->io->error(sprintf('User "%s" not found.', $username));
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->io->success('Finished cleaning.');
|
|
||||||
} else {
|
|
||||||
$users = $this->getContainer()->get('wallabag_user.user_repository')->findAll();
|
$users = $this->getContainer()->get('wallabag_user.user_repository')->findAll();
|
||||||
|
|
||||||
$this->io->text(sprintf('Cleaning through <info>%d</info> user accounts', \count($users)));
|
$this->io->text(sprintf('Cleaning through <info>%d</info> user accounts', \count($users)));
|
||||||
|
|
||||||
|
if ($dryRun) {
|
||||||
|
$this->io->text('Dry run mode <info>enabled</info> (no images will be removed)');
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($users as $user) {
|
foreach ($users as $user) {
|
||||||
$this->clean($user);
|
$this->clean($user, $dryRun);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->io->success(sprintf('Finished cleaning. %d deleted images', $this->deleted));
|
$this->io->success(sprintf('Finished cleaning. %d deleted images', $this->deleted));
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function clean(User $user)
|
private function clean(User $user, bool $dryRun)
|
||||||
{
|
{
|
||||||
$this->io->text(sprintf('Processing user <info>%s</info>', $user->getUsername()));
|
$this->io->text(sprintf('Processing user <info>%s</info>', $user->getUsername()));
|
||||||
|
|
||||||
|
@ -106,13 +98,16 @@ class CleanDownloadedImagesCommand extends ContainerAwareCommand
|
||||||
foreach ($existingPaths as $existingPath) {
|
foreach ($existingPaths as $existingPath) {
|
||||||
if (!\in_array($existingPath, $validPaths, true)) {
|
if (!\in_array($existingPath, $validPaths, true)) {
|
||||||
$fullPath = $baseFolder . '/' . $existingPath[0] . '/' . $existingPath[1] . '/' . $existingPath;
|
$fullPath = $baseFolder . '/' . $existingPath[0] . '/' . $existingPath[1] . '/' . $existingPath;
|
||||||
$res = array_map('unlink', glob($fullPath . '/*.*'));
|
$files = glob($fullPath . '/*.*');
|
||||||
|
|
||||||
|
if (!$dryRun) {
|
||||||
|
array_map('unlink', $files);
|
||||||
rmdir($fullPath);
|
rmdir($fullPath);
|
||||||
|
}
|
||||||
|
|
||||||
$deletedCount += \count($res);
|
$deletedCount += \count($files);
|
||||||
|
|
||||||
$this->io->text(sprintf('Deleted images in <info>%s</info>: <info>%d</info>', $existingPath, \count($res)));
|
$this->io->text(sprintf('Deleted images in <info>%s</info>: <info>%d</info>', $existingPath, \count($files)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue