diff options
author | Joas Schilling <coding@schilljs.com> | 2016-09-21 00:48:05 +0200 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2016-09-29 15:57:10 +0200 |
commit | e1df6b5702224bbbdc4ed555ecc90620ba9b0e40 (patch) | |
tree | 74fa899ba41a019ac77be73ec11e37bb3ea9bf0c | |
parent | 5551c6311025e432525a75ecda4d99fbeec913a6 (diff) | |
download | nextcloud-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.php | 28 | ||||
-rw-r--r-- | core/Command/App/Disable.php | 25 | ||||
-rw-r--r-- | core/Command/App/Enable.php | 32 | ||||
-rw-r--r-- | core/Command/App/GetPath.php | 13 | ||||
-rw-r--r-- | core/Command/App/ListApps.php | 22 |
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 []; + } } |