Skip to content
Snippets Groups Projects
Commit 0aba549e authored by Bart Visscher's avatar Bart Visscher
Browse files

Use more object oriented way for console commands

parent 92e90c8e
No related branches found
No related tags found
No related merge requests found
Subproject commit dc87ea630287f27502eba825fbb19fcc33c34c86 Subproject commit 98fdc3a4e2f56f7d231470418222162dbf95f46a
<?php
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
{
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 = \OC_User::getUsers();
} else {
$users = $input->getArgument('user_id');
}
foreach ($users as $user) {
$this->scanFiles($user, $output);
}
}
}
<?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);
}
...@@ -7,6 +7,9 @@ ...@@ -7,6 +7,9 @@
* See the COPYING-README file. * See the COPYING-README file.
*/ */
use OC\Core\Command\GreetCommand;
use Symfony\Component\Console\Application;
$RUNTIME_NOAPPS = true; $RUNTIME_NOAPPS = true;
require_once 'lib/base.php'; require_once 'lib/base.php';
...@@ -21,32 +24,8 @@ if (!OC::$CLI) { ...@@ -21,32 +24,8 @@ if (!OC::$CLI) {
exit(0); exit(0);
} }
$self = basename($argv[0]); $defaults = new OC_Defaults;
if ($argc <= 1) { $application = new Application($defaults->getName(), \OC_Util::getVersionString());
$argv[1] = "help"; $application->add(new OC\Core\Command\Status);
} $application->add(new OCA\Files\Command\Scan);
$application->run();
$command = $argv[1];
array_shift($argv);
switch ($command) {
case 'files:scan':
require_once 'apps/files/console/scan.php';
break;
case 'status':
require_once 'status.php';
break;
case 'help':
echo "Usage:" . PHP_EOL;
echo " " . $self . " <command>" . PHP_EOL;
echo PHP_EOL;
echo "Available commands:" . PHP_EOL;
echo " files:scan -> rescan filesystem" .PHP_EOL;
echo " status -> show some status information" .PHP_EOL;
echo " help -> show this help screen" .PHP_EOL;
break;
default:
echo "Unknown command '$command'" . PHP_EOL;
echo "For available commands type ". $self . " help" . PHP_EOL;
break;
}
<?php
namespace OC\Core\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 Status extends Command
{
protected function configure()
{
$this
->setName('status')
->setDescription('show some status information')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$values = array(
'installed' => \OC_Config::getValue('installed') ? 'true' : 'false',
'version' => implode('.', \OC_Util::getVersion()),
'versionstring' => \OC_Util::getVersionString(),
'edition' => \OC_Util::getEditionString());
print_r($values);
}
}
...@@ -358,6 +358,7 @@ class OC { ...@@ -358,6 +358,7 @@ class OC {
self::$loader->registerPrefix('Doctrine\\Common', 'doctrine/common/lib'); self::$loader->registerPrefix('Doctrine\\Common', 'doctrine/common/lib');
self::$loader->registerPrefix('Doctrine\\DBAL', 'doctrine/dbal/lib'); self::$loader->registerPrefix('Doctrine\\DBAL', 'doctrine/dbal/lib');
self::$loader->registerPrefix('Symfony\\Component\\Routing', 'symfony/routing'); self::$loader->registerPrefix('Symfony\\Component\\Routing', 'symfony/routing');
self::$loader->registerPrefix('Symfony\\Component\\Console', 'symfony/console');
self::$loader->registerPrefix('Sabre\\VObject', '3rdparty'); self::$loader->registerPrefix('Sabre\\VObject', '3rdparty');
self::$loader->registerPrefix('Sabre_', '3rdparty'); self::$loader->registerPrefix('Sabre_', '3rdparty');
self::$loader->registerPrefix('Patchwork', '3rdparty'); self::$loader->registerPrefix('Patchwork', '3rdparty');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment