summaryrefslogtreecommitdiffstats
path: root/apps/files
diff options
context:
space:
mode:
authorBart Visscher <bartv@thisnet.nl>2013-09-19 14:22:32 -0700
committerBart Visscher <bartv@thisnet.nl>2013-09-19 14:22:32 -0700
commit8e26f291a7912ccc3520ac53af0ddf1da714fdbc (patch)
tree6fef8529b3dfca0c8387a413696bbc59238c1ff7 /apps/files
parentf9549a446547f297dcdf4617c2d0fdab2938e74a (diff)
parenta9ea99e93d0dc982b5daa3ed7974e5bd419dcd1b (diff)
downloadnextcloud-server-8e26f291a7912ccc3520ac53af0ddf1da714fdbc.tar.gz
nextcloud-server-8e26f291a7912ccc3520ac53af0ddf1da714fdbc.zip
Merge pull request #4684 from owncloud/improved-console
Use more object oriented way for console commands
Diffstat (limited to 'apps/files')
-rw-r--r--apps/files/appinfo/register_command.php9
-rw-r--r--apps/files/command/scan.php73
-rw-r--r--apps/files/console/scan.php31
3 files changed, 82 insertions, 31 deletions
diff --git a/apps/files/appinfo/register_command.php b/apps/files/appinfo/register_command.php
new file mode 100644
index 00000000000..435ce0ab23f
--- /dev/null
+++ b/apps/files/appinfo/register_command.php
@@ -0,0 +1,9 @@
+<?php
+/**
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+$application->add(new OCA\Files\Command\Scan(OC_User::getManager()));
diff --git a/apps/files/command/scan.php b/apps/files/command/scan.php
new file mode 100644
index 00000000000..25ab70af362
--- /dev/null
+++ b/apps/files/command/scan.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Copyright (c) 2013 Thomas Müller <thomas.mueller@tmit.eu>
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCA\Files\Command;
+
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class Scan extends Command {
+
+ /**
+ * @var \OC\User\Manager $userManager
+ */
+ private $userManager;
+
+ public function __construct(\OC\User\Manager $userManager) {
+ $this->userManager = $userManager;
+ parent::__construct();
+ }
+
+ protected function configure() {
+ $this
+ ->setName('files:scan')
+ ->setDescription('rescan filesystem')
+ ->addArgument(
+ 'user_id',
+ InputArgument::OPTIONAL | InputArgument::IS_ARRAY,
+ 'will rescan all files of the given user(s)'
+ )
+ ->addOption(
+ 'all',
+ null,
+ InputOption::VALUE_NONE,
+ 'will rescan all files of all known users'
+ )
+ ;
+ }
+
+ protected function scanFiles($user, OutputInterface $output) {
+ $scanner = new \OC\Files\Utils\Scanner($user);
+ $scanner->listen('\OC\Files\Utils\Scanner', 'scanFile', function($path) use ($output) {
+ $output->writeln("Scanning <info>$path</info>");
+ });
+ $scanner->listen('\OC\Files\Utils\Scanner', 'scanFolder', function($path) use ($output) {
+ $output->writeln("Scanning <info>$path</info>");
+ });
+ $scanner->scan('');
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output) {
+ if ($input->getOption('all')) {
+ $users = $this->userManager->search('');
+ } else {
+ $users = $input->getArgument('user_id');
+ }
+
+ foreach ($users as $user) {
+ if (is_object($user)) {
+ $user = $user->getUID();
+ }
+ $this->scanFiles($user, $output);
+ }
+ }
+}
diff --git a/apps/files/console/scan.php b/apps/files/console/scan.php
deleted file mode 100644
index 70183fc888a..00000000000
--- a/apps/files/console/scan.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-if (count($argv) !== 2) {
- echo "Usage:" . PHP_EOL;
- echo " files:scan <user_id>" . PHP_EOL;
- echo " will rescan all files of the given user" . PHP_EOL;
- echo " files:scan --all" . PHP_EOL;
- echo " will rescan all files of all known users" . PHP_EOL;
- return;
-}
-
-function scanFiles($user) {
- $scanner = new \OC\Files\Utils\Scanner($user);
- $scanner->listen('\OC\Files\Utils\Scanner', 'scanFile', function($path) {
- echo "Scanning $path" . PHP_EOL;
- });
- $scanner->listen('\OC\Files\Utils\Scanner', 'scanFolder', function($path) {
- echo "Scanning $path" . PHP_EOL;
- });
- $scanner->scan('');
-}
-
-if ($argv[1] === '--all') {
- $users = OC_User::getUsers();
-} else {
- $users = array($argv[1]);
-}
-
-foreach ($users as $user) {
- scanFiles($user);
-}