summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2023-04-21 15:22:22 +0200
committerbackportbot-nextcloud[bot] <backportbot-nextcloud[bot]@users.noreply.github.com>2023-05-15 10:06:01 +0000
commit3368206e1373ab224c01db15e584283e6f2a6855 (patch)
tree0fb1f9961217a56bab2713318836bee6cc9cef55
parent8f08556241aa2015722f57896b2603b80575dec5 (diff)
downloadnextcloud-server-3368206e1373ab224c01db15e584283e6f2a6855.tar.gz
nextcloud-server-3368206e1373ab224c01db15e584283e6f2a6855.zip
add option to list all files instead of limiting
Signed-off-by: Robin Appelman <robin@icewind.nl>
-rw-r--r--core/Command/Info/File.php2
-rw-r--r--core/Command/Info/FileUtils.php30
-rw-r--r--core/Command/Info/Space.php10
-rw-r--r--lib/composer/composer/autoload_classmap.php2
-rw-r--r--lib/composer/composer/autoload_static.php2
5 files changed, 27 insertions, 19 deletions
diff --git a/core/Command/Info/File.php b/core/Command/Info/File.php
index 8ca7a3d0264..20d8cbffc94 100644
--- a/core/Command/Info/File.php
+++ b/core/Command/Info/File.php
@@ -7,10 +7,8 @@ namespace OC\Core\Command\Info;
use OC\Files\ObjectStore\ObjectStoreStorage;
use OCA\Files_External\Config\ExternalMountPoint;
use OCA\GroupFolders\Mount\GroupMountPoint;
-use OCP\Files\Config\IUserMountCache;
use OCP\Files\Folder;
use OCP\Files\IHomeStorage;
-use OCP\Files\IRootFolder;
use OCP\Files\Mount\IMountPoint;
use OCP\Files\Node;
use OCP\Files\NotFoundException;
diff --git a/core/Command/Info/FileUtils.php b/core/Command/Info/FileUtils.php
index e4793bdfd2a..1264dee5de2 100644
--- a/core/Command/Info/FileUtils.php
+++ b/core/Command/Info/FileUtils.php
@@ -23,7 +23,6 @@ declare(strict_types=1);
namespace OC\Core\Command\Info;
-
use OC\Files\SetupManager;
use OCA\Circles\MountManager\CircleMount;
use OCA\Files_External\Config\ExternalMountPoint;
@@ -195,7 +194,8 @@ class FileUtils {
OutputInterface $output,
Folder $node,
string $prefix,
- array &$sizeLimits
+ array &$sizeLimits,
+ bool $all,
): int {
/**
* Algorithm to print the N largest items in a folder without requiring to query or sort the entire three
@@ -220,25 +220,31 @@ class FileUtils {
return $b->getSize() <=> $a->getSize();
});
foreach ($children as $i => $child) {
- if (count($sizeLimits) === 0 || $child->getSize() < $sizeLimits[0]) {
- return $count;
+ if (!$all) {
+ if (count($sizeLimits) === 0 || $child->getSize() < $sizeLimits[0]) {
+ return $count;
+ }
+ array_shift($sizeLimits);
}
- array_shift($sizeLimits);
$count += 1;
/** @var Node $child */
$output->writeln("$prefix- " . $child->getName() . ": <info>" . Util::humanFileSize($child->getSize()) . "</info>");
if ($child instanceof Folder) {
$recurseSizeLimits = $sizeLimits;
- for ($j = 0; $j < count($recurseSizeLimits); $j++) {
- $nextChildSize = (int)$children[$i + $j + 1]?->getSize();
- if ($nextChildSize > $recurseSizeLimits[0]) {
- array_shift($recurseSizeLimits);
- $recurseSizeLimits[] = $nextChildSize;
+ if (!$all) {
+ for ($j = 0; $j < count($recurseSizeLimits); $j++) {
+ if (isset($children[$i + $j + 1])) {
+ $nextChildSize = $children[$i + $j + 1]->getSize();
+ if ($nextChildSize > $recurseSizeLimits[0]) {
+ array_shift($recurseSizeLimits);
+ $recurseSizeLimits[] = $nextChildSize;
+ }
+ }
}
+ sort($recurseSizeLimits);
}
- sort($recurseSizeLimits);
- $recurseCount = $this->outputLargeFilesTree($output, $child, $prefix . " ", $recurseSizeLimits);
+ $recurseCount = $this->outputLargeFilesTree($output, $child, $prefix . " ", $recurseSizeLimits, $all);
$sizeLimits = array_slice($sizeLimits, $recurseCount);
$count += $recurseCount;
}
diff --git a/core/Command/Info/Space.php b/core/Command/Info/Space.php
index 36821ac521f..7f901ee729b 100644
--- a/core/Command/Info/Space.php
+++ b/core/Command/Info/Space.php
@@ -23,7 +23,6 @@ declare(strict_types=1);
namespace OC\Core\Command\Info;
-
use OCP\Files\Folder;
use OCP\Util;
use Symfony\Component\Console\Command\Command;
@@ -45,12 +44,14 @@ class Space extends Command {
->setName('info:file:space')
->setDescription('Summarize space usage of specified folder')
->addArgument('file', InputArgument::REQUIRED, "File id or path")
- ->addOption('count', 'c', InputOption::VALUE_REQUIRED, "Number of items to display", 25);
+ ->addOption('count', 'c', InputOption::VALUE_REQUIRED, "Number of items to display", 25)
+ ->addOption('all', 'a', InputOption::VALUE_NONE, "Display all items");
}
public function execute(InputInterface $input, OutputInterface $output): int {
$fileInput = $input->getArgument('file');
$count = (int)$input->getOption('count');
+ $all = $input->getOption('all');
$node = $this->fileUtils->getNode($fileInput);
if (!$node) {
$output->writeln("<error>file $fileInput not found</error>");
@@ -58,10 +59,9 @@ class Space extends Command {
}
$output->writeln($node->getName() . ": <info>" . Util::humanFileSize($node->getSize()) . "</info>");
if ($node instanceof Folder) {
- $limits = array_fill(0, $count - 1, 0);
- $this->fileUtils->outputLargeFilesTree($output, $node, '', $limits);
+ $limits = $all ? [] : array_fill(0, $count - 1, 0);
+ $this->fileUtils->outputLargeFilesTree($output, $node, '', $limits, $all);
}
return 0;
}
-
}
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 1504d39b9a4..3cf39596628 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -939,6 +939,8 @@ return array(
'OC\\Core\\Command\\Group\\ListCommand' => $baseDir . '/core/Command/Group/ListCommand.php',
'OC\\Core\\Command\\Group\\RemoveUser' => $baseDir . '/core/Command/Group/RemoveUser.php',
'OC\\Core\\Command\\Info\\File' => $baseDir . '/core/Command/Info/File.php',
+ 'OC\\Core\\Command\\Info\\FileUtils' => $baseDir . '/core/Command/Info/FileUtils.php',
+ 'OC\\Core\\Command\\Info\\Space' => $baseDir . '/core/Command/Info/Space.php',
'OC\\Core\\Command\\Integrity\\CheckApp' => $baseDir . '/core/Command/Integrity/CheckApp.php',
'OC\\Core\\Command\\Integrity\\CheckCore' => $baseDir . '/core/Command/Integrity/CheckCore.php',
'OC\\Core\\Command\\Integrity\\SignApp' => $baseDir . '/core/Command/Integrity/SignApp.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 842e43eca96..49c81d27eaa 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -972,6 +972,8 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
'OC\\Core\\Command\\Group\\ListCommand' => __DIR__ . '/../../..' . '/core/Command/Group/ListCommand.php',
'OC\\Core\\Command\\Group\\RemoveUser' => __DIR__ . '/../../..' . '/core/Command/Group/RemoveUser.php',
'OC\\Core\\Command\\Info\\File' => __DIR__ . '/../../..' . '/core/Command/Info/File.php',
+ 'OC\\Core\\Command\\Info\\FileUtils' => __DIR__ . '/../../..' . '/core/Command/Info/FileUtils.php',
+ 'OC\\Core\\Command\\Info\\Space' => __DIR__ . '/../../..' . '/core/Command/Info/Space.php',
'OC\\Core\\Command\\Integrity\\CheckApp' => __DIR__ . '/../../..' . '/core/Command/Integrity/CheckApp.php',
'OC\\Core\\Command\\Integrity\\CheckCore' => __DIR__ . '/../../..' . '/core/Command/Integrity/CheckCore.php',
'OC\\Core\\Command\\Integrity\\SignApp' => __DIR__ . '/../../..' . '/core/Command/Integrity/SignApp.php',