Skip to content

Commit

Permalink
Merge branch 'dev/index-command-options' of https://github.com/Murena…
Browse files Browse the repository at this point in the history
…-SAS/memories into Murena-SAS-dev/index-command-options
  • Loading branch information
pulsejet committed Sep 8, 2023
2 parents 50dfffc + d087781 commit a9a25a9
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion lib/Command/Index.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
use OCA\Memories\Service;
use OCP\Files\IRootFolder;
use OCP\IConfig;
use OCP\IGroupManager;
use OCP\IUser;
use OCP\IUserManager;
use Symfony\Component\Console\Command\Command;
Expand All @@ -40,13 +41,17 @@ class IndexOpts
public bool $clear = false;
public ?string $user = null;
public ?string $folder = null;
public ?string $group = null;
public bool $skipCleanup = false;

public function __construct(InputInterface $input)
{
$this->force = (bool) $input->getOption('force');
$this->clear = (bool) $input->getOption('clear');
$this->user = $input->getOption('user');
$this->folder = $input->getOption('folder');
$this->skipCleanup = $input->getOption('skip-cleanup');
$this->group = $input->getOption('group');
}
}

Expand All @@ -56,6 +61,7 @@ class Index extends Command
protected array $sizes;

protected IUserManager $userManager;
protected IGroupManager $groupManager;
protected IRootFolder $rootFolder;
protected IConfig $config;
protected Service\Index $indexer;
Expand All @@ -71,13 +77,15 @@ class Index extends Command
public function __construct(
IRootFolder $rootFolder,
IUserManager $userManager,
IGroupManager $groupManager,
IConfig $config,
Service\Index $indexer,
TimelineWrite $timelineWrite
) {
parent::__construct();

$this->userManager = $userManager;
$this->groupManager = $groupManager;
$this->rootFolder = $rootFolder;
$this->config = $config;
$this->indexer = $indexer;
Expand All @@ -93,6 +101,8 @@ protected function configure(): void
->addOption('folder', null, InputOption::VALUE_REQUIRED, 'Index only the specified folder (relative to the user\'s root)')
->addOption('force', 'f', InputOption::VALUE_NONE, 'Force refresh of existing index entries')
->addOption('clear', null, InputOption::VALUE_NONE, 'Clear all existing index entries')
->addOption('skip-cleanup', null, InputOption::VALUE_NONE, 'Skip cleanup step')
->addOption('group', 'g', InputOption::VALUE_REQUIRED, 'Index only specified group')
;
}

Expand Down Expand Up @@ -125,7 +135,9 @@ protected function execute(InputInterface $input, OutputInterface $output): int
$this->runIndex();

// Clean up the index
$this->indexer->cleanupStale();
if (!$this->opts->skipCleanup) {
$this->indexer->cleanupStale();
}

return 0;
} catch (\Exception $e) {
Expand Down Expand Up @@ -200,6 +212,14 @@ private function runForUsers($closure)
} else {
$this->output->writeln("<error>User {$uid} not found</error>");
}
} elseif ($gid = $this->opts->group) {
if ($group = $this->groupManager->get($gid)) {
foreach ($group->getUsers() as $user) {
$closure($user);
}
} else {
$this->output->writeln("<error>Group {$gid} not found</error>");
}
} else {
$this->userManager->callForSeenUsers(static fn (IUser $user) => $closure($user));
}
Expand Down

0 comments on commit a9a25a9

Please sign in to comment.