diff options
author | sualko <klaus@jsxc.org> | 2017-07-07 08:33:31 +0200 |
---|---|---|
committer | sualko <klaus@jsxc.org> | 2017-07-26 14:35:42 +0200 |
commit | 3e62a2515593e12505af6ab5f9dbee8f2c2b7802 (patch) | |
tree | 6ae12bccdbd62754af8bd63ea76e25a15930e109 /core/Command | |
parent | da31a30edbdd7b5525852e9b3f8fea3e37384242 (diff) | |
download | nextcloud-server-3e62a2515593e12505af6ab5f9dbee8f2c2b7802.tar.gz nextcloud-server-3e62a2515593e12505af6ab5f9dbee8f2c2b7802.zip |
add occ app:install command
Signed-off-by: Klaus Herberth <klaus@jsxc.org>
Diffstat (limited to 'core/Command')
-rw-r--r-- | core/Command/App/Install.php | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/core/Command/App/Install.php b/core/Command/App/Install.php new file mode 100644 index 00000000000..f042f3c277b --- /dev/null +++ b/core/Command/App/Install.php @@ -0,0 +1,75 @@ +<?php +/** + * @copyright Copyright (c) 2016, ownCloud, Inc. + * + * @author Klaus Herberth <klaus@jsxc.org> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +use OC\Installer; +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 Install extends Command { + + protected function configure() { + $this + ->setName('app:install') + ->setDescription('install an app') + ->addArgument( + 'app-id', + InputArgument::REQUIRED, + 'install the specified app' + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) { + $appId = $input->getArgument('app-id'); + + if (\OC_App::getAppPath($appId)) { + $output->writeln($appId . ' already installed'); + return 1; + } + + try { + $installer = new Installer( + \OC::$server->getAppFetcher(), + \OC::$server->getHTTPClientService(), + \OC::$server->getTempManager(), + \OC::$server->getLogger(), + \OC::$server->getConfig() + ); + $installer->downloadApp($appId); + $result = $installer->installApp($appId); + } catch(\Exception $e) { + $output->writeln('Error: ' . $e->getMessage()); + return 1; + } + + if($result === false) { + $output->writeln($appId . ' couldn\'t be installed'); + return 1; + } + + $output->writeln($appId . ' installed'); + + return 0; + } +} |