setName('files:mount:list') ->setDescription('List of mounts for a user') ->addArgument('user', InputArgument::REQUIRED, 'User to list mounts for'); } public function execute(InputInterface $input, OutputInterface $output): int { $userId = $input->getArgument('user'); $user = $this->userManager->get($userId); if (!$user) { $output->writeln("User $userId not found"); return 1; } $mounts = $this->mountProviderCollection->getMountsForUser($user); $mounts[] = $this->mountProviderCollection->getHomeMountForUser($user); /** @var array $cachedByMountpoint */ $mountsByMountpoint = array_combine(array_map(fn (IMountPoint $mount) => $mount->getMountPoint(), $mounts), $mounts); usort($mounts, fn (IMountPoint $a, IMountPoint $b) => $a->getMountPoint() <=> $b->getMountPoint()); $cachedMounts = $this->userMountCache->getMountsForUser($user); usort($cachedMounts, fn (ICachedMountInfo $a, ICachedMountInfo $b) => $a->getMountPoint() <=> $b->getMountPoint()); /** @var array $cachedByMountpoint */ $cachedByMountpoint = array_combine(array_map(fn (ICachedMountInfo $mount) => $mount->getMountPoint(), $cachedMounts), $cachedMounts); foreach ($mounts as $mount) { $output->writeln('' . $mount->getMountPoint() . ': ' . $mount->getStorageId()); if (isset($cachedByMountpoint[$mount->getMountPoint()])) { $cached = $cachedByMountpoint[$mount->getMountPoint()]; $output->writeln("\t- provider: " . $cached->getMountProvider()); $output->writeln("\t- storage id: " . $cached->getStorageId()); $output->writeln("\t- root id: " . $cached->getRootId()); } else { $output->writeln("\tnot registered"); } } foreach ($cachedMounts as $cachedMount) { if (!isset($mountsByMountpoint[$cachedMount->getMountPoint()])) { $output->writeln('' . $cachedMount->getMountPoint() . ':'); $output->writeln("\tregistered but no longer provided"); $output->writeln("\t- provider: " . $cachedMount->getMountProvider()); $output->writeln("\t- storage id: " . $cachedMount->getStorageId()); $output->writeln("\t- root id: " . $cachedMount->getRootId()); } } return 0; } }