Skip to content

Commit

Permalink
Full support for autocomplete of app:*
Browse files Browse the repository at this point in the history
  • Loading branch information
nickvergessen committed Sep 20, 2016
1 parent 3311574 commit c618fc5
Show file tree
Hide file tree
Showing 5 changed files with 117 additions and 3 deletions.
28 changes: 27 additions & 1 deletion core/Command/App/CheckCode.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,15 @@
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;
Expand Down Expand Up @@ -197,4 +199,28 @@ private function analyseUpdateFile($appId, OutputInterface $output) {
$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 [];
}
}
25 changes: 24 additions & 1 deletion core/Command/App/Disable.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -69,4 +71,25 @@ protected function execute(InputInterface $input, OutputInterface $output) {
$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 [];
}
}
32 changes: 31 additions & 1 deletion core/Command/App/Enable.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -81,4 +84,31 @@ protected function execute(InputInterface $input, OutputInterface $output) {
}
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 [];
}
}
13 changes: 13 additions & 0 deletions core/Command/App/GetPath.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -60,4 +61,16 @@ protected function execute(InputInterface $input, OutputInterface $output) {
// 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 [];
}
}
22 changes: 22 additions & 0 deletions core/Command/App/ListApps.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@

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;
Expand Down Expand Up @@ -117,4 +118,25 @@ protected function writeAppList(InputInterface $input, OutputInterface $output,
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 [];
}
}

0 comments on commit c618fc5

Please sign in to comment.