aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2016-09-21 00:48:05 +0200
committerMorris Jobke <hey@morrisjobke.de>2016-09-29 15:57:10 +0200
commite1df6b5702224bbbdc4ed555ecc90620ba9b0e40 (patch)
tree74fa899ba41a019ac77be73ec11e37bb3ea9bf0c
parent5551c6311025e432525a75ecda4d99fbeec913a6 (diff)
downloadnextcloud-server-e1df6b5702224bbbdc4ed555ecc90620ba9b0e40.tar.gz
nextcloud-server-e1df6b5702224bbbdc4ed555ecc90620ba9b0e40.zip
Full support for autocomplete of app:*
Signed-off-by: Joas Schilling <coding@schilljs.com>
-rw-r--r--core/Command/App/CheckCode.php28
-rw-r--r--core/Command/App/Disable.php25
-rw-r--r--core/Command/App/Enable.php32
-rw-r--r--core/Command/App/GetPath.php13
-rw-r--r--core/Command/App/ListApps.php22
5 files changed, 117 insertions, 3 deletions
diff --git a/core/Command/App/CheckCode.php b/core/Command/App/CheckCode.php
index 9c9485254da..bd1bac247a2 100644
--- a/core/Command/App/CheckCode.php
+++ b/core/Command/App/CheckCode.php
@@ -29,13 +29,15 @@ use OC\App\CodeChecker\CodeChecker;
use OC\App\CodeChecker\EmptyCheck;
use OC\App\CodeChecker\InfoChecker;
use OC\App\InfoParser;
+use Stecman\Component\Symfony\Console\BashCompletion\Completion\CompletionAwareInterface;
+use Stecman\Component\Symfony\Console\BashCompletion\CompletionContext;
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 CheckCode extends Command {
+class CheckCode extends Command implements CompletionAwareInterface {
/** @var InfoParser */
private $infoParser;
@@ -197,4 +199,28 @@ class CheckCode extends Command {
$output->writeln("<info>Deprecated file found: $updatePhp - please use repair steps</info>");
}
}
+
+ /**
+ * @param string $optionName
+ * @param CompletionContext $context
+ * @return string[]
+ */
+ public function completeOptionValues($optionName, CompletionContext $context) {
+ if ($optionName === 'checker') {
+ return ['private', 'deprecation', 'strong-comparison'];
+ }
+ return [];
+ }
+
+ /**
+ * @param string $argumentName
+ * @param CompletionContext $context
+ * @return string[]
+ */
+ public function completeArgumentValues($argumentName, CompletionContext $context) {
+ if ($argumentName === 'app-id') {
+ return \OC_App::getAllApps();
+ }
+ return [];
+ }
}
diff --git a/core/Command/App/Disable.php b/core/Command/App/Disable.php
index 07e752ee839..b64e309bd97 100644
--- a/core/Command/App/Disable.php
+++ b/core/Command/App/Disable.php
@@ -26,12 +26,14 @@
namespace OC\Core\Command\App;
use OCP\App\IAppManager;
+use Stecman\Component\Symfony\Console\BashCompletion\Completion\CompletionAwareInterface;
+use Stecman\Component\Symfony\Console\BashCompletion\CompletionContext;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
-class Disable extends Command {
+class Disable extends Command implements CompletionAwareInterface {
/** @var IAppManager */
protected $manager;
@@ -69,4 +71,25 @@ class Disable extends Command {
$output->writeln('No such app enabled: ' . $appId);
}
}
+
+ /**
+ * @param string $optionName
+ * @param CompletionContext $context
+ * @return string[]
+ */
+ public function completeOptionValues($optionName, CompletionContext $context) {
+ return [];
+ }
+
+ /**
+ * @param string $argumentName
+ * @param CompletionContext $context
+ * @return string[]
+ */
+ public function completeArgumentValues($argumentName, CompletionContext $context) {
+ if ($argumentName === 'app-id') {
+ return array_diff(\OC_App::getEnabledApps(true, true), $this->manager->getAlwaysEnabledApps());
+ }
+ return [];
+ }
}
diff --git a/core/Command/App/Enable.php b/core/Command/App/Enable.php
index d5b161f8eaf..19f24d82e43 100644
--- a/core/Command/App/Enable.php
+++ b/core/Command/App/Enable.php
@@ -26,13 +26,16 @@
namespace OC\Core\Command\App;
use OCP\App\IAppManager;
+use OCP\IGroup;
+use Stecman\Component\Symfony\Console\BashCompletion\Completion\CompletionAwareInterface;
+use Stecman\Component\Symfony\Console\BashCompletion\CompletionContext;
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 Enable extends Command {
+class Enable extends Command implements CompletionAwareInterface {
/** @var IAppManager */
protected $manager;
@@ -81,4 +84,31 @@ class Enable extends Command {
}
return 0;
}
+
+ /**
+ * @param string $optionName
+ * @param CompletionContext $context
+ * @return string[]
+ */
+ public function completeOptionValues($optionName, CompletionContext $context) {
+ if ($optionName === 'groups') {
+ return array_map(function(IGroup $group) {
+ return $group->getGID();
+ }, \OC::$server->getGroupManager()->search($context->getCurrentWord()));
+ }
+ return [];
+ }
+
+ /**
+ * @param string $argumentName
+ * @param CompletionContext $context
+ * @return string[]
+ */
+ public function completeArgumentValues($argumentName, CompletionContext $context) {
+ if ($argumentName === 'app-id') {
+ $allApps = \OC_App::getAllApps();
+ return array_diff($allApps, \OC_App::getEnabledApps(true, true));
+ }
+ return [];
+ }
}
diff --git a/core/Command/App/GetPath.php b/core/Command/App/GetPath.php
index 3eeee5c2c44..33a812c674e 100644
--- a/core/Command/App/GetPath.php
+++ b/core/Command/App/GetPath.php
@@ -23,6 +23,7 @@
namespace OC\Core\Command\App;
use OC\Core\Command\Base;
+use Stecman\Component\Symfony\Console\BashCompletion\CompletionContext;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
@@ -60,4 +61,16 @@ class GetPath extends Base {
// App not found, exit with non-zero
return 1;
}
+
+ /**
+ * @param string $argumentName
+ * @param CompletionContext $context
+ * @return string[]
+ */
+ public function completeArgumentValues($argumentName, CompletionContext $context) {
+ if ($argumentName === 'app') {
+ return \OC_App::getAllApps();
+ }
+ return [];
+ }
}
diff --git a/core/Command/App/ListApps.php b/core/Command/App/ListApps.php
index 08449dd8dc9..e03e3ce8f56 100644
--- a/core/Command/App/ListApps.php
+++ b/core/Command/App/ListApps.php
@@ -27,6 +27,7 @@ namespace OC\Core\Command\App;
use OC\Core\Command\Base;
use OCP\App\IAppManager;
+use Stecman\Component\Symfony\Console\BashCompletion\CompletionContext;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
@@ -117,4 +118,25 @@ class ListApps extends Base {
break;
}
}
+
+ /**
+ * @param string $optionName
+ * @param CompletionContext $completionContext
+ * @return array
+ */
+ public function completeOptionValues($optionName, CompletionContext $completionContext) {
+ if ($optionName === 'shipped') {
+ return ['true', 'false'];
+ }
+ return [];
+ }
+
+ /**
+ * @param string $argumentName
+ * @param CompletionContext $context
+ * @return string[]
+ */
+ public function completeArgumentValues($argumentName, CompletionContext $context) {
+ return [];
+ }
}