setName('app:disable') ->setDescription('disable an app') ->addArgument( 'app-id', InputArgument::REQUIRED | InputArgument::IS_ARRAY, 'disable the specified app' ); } protected function execute(InputInterface $input, OutputInterface $output): int { $appIds = $input->getArgument('app-id'); foreach ($appIds as $appId) { $this->disableApp($appId, $output); } return $this->exitCode; } private function disableApp(string $appId, OutputInterface $output): void { if ($this->appManager->isInstalled($appId) === false) { $output->writeln('No such app enabled: ' . $appId); return; } try { $this->appManager->disableApp($appId); $appVersion = $this->appManager->getAppVersion($appId); $output->writeln($appId . ' ' . $appVersion . ' disabled'); } catch (\Exception $e) { $output->writeln($e->getMessage()); $this->exitCode = 2; } } /** * @param string $optionName * @param CompletionContext $context * @return string[] */ public function completeOptionValues($optionName, CompletionContext $context): array { return []; } /** * @param string $argumentName * @param CompletionContext $context * @return string[] */ public function completeArgumentValues($argumentName, CompletionContext $context): array { if ($argumentName === 'app-id') { return array_diff(\OC_App::getEnabledApps(true, true), $this->appManager->getAlwaysEnabledApps()); } return []; } }