summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2017-07-27 15:36:30 +0200
committerGitHub <noreply@github.com>2017-07-27 15:36:30 +0200
commitc7757b07f85555dc839d44a4a075cb333c2c1ff3 (patch)
treeb8e24d7543ffb96c77469ffe2a007ed57b9456a6
parent63aa12e38c2e819b54c4b9e9632264a0e59dc6f2 (diff)
parent4868e191d7193042c2af3d61d0babc86de51d216 (diff)
downloadnextcloud-server-c7757b07f85555dc839d44a4a075cb333c2c1ff3.tar.gz
nextcloud-server-c7757b07f85555dc839d44a4a075cb333c2c1ff3.zip
Merge pull request #5644 from nextcloud/add-occ-app-install
add occ app:install command
-rw-r--r--core/Command/App/Install.php77
-rw-r--r--core/register_command.php3
-rw-r--r--lib/composer/composer/autoload_classmap.php1
-rw-r--r--lib/composer/composer/autoload_static.php1
4 files changed, 81 insertions, 1 deletions
diff --git a/core/Command/App/Install.php b/core/Command/App/Install.php
new file mode 100644
index 00000000000..0c99c7ff85a
--- /dev/null
+++ b/core/Command/App/Install.php
@@ -0,0 +1,77 @@
+<?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/>
+ *
+ */
+
+namespace OC\Core\Command\App;
+
+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;
+ }
+}
diff --git a/core/register_command.php b/core/register_command.php
index fd693729a72..02bdbedc6e0 100644
--- a/core/register_command.php
+++ b/core/register_command.php
@@ -59,9 +59,10 @@ $application->add(new \OC\Core\Command\Integrity\CheckCore(
if (\OC::$server->getConfig()->getSystemValue('installed', false)) {
$application->add(new OC\Core\Command\App\Disable(\OC::$server->getAppManager()));
$application->add(new OC\Core\Command\App\Enable(\OC::$server->getAppManager()));
+ $application->add(new OC\Core\Command\App\Install());
$application->add(new OC\Core\Command\App\GetPath());
$application->add(new OC\Core\Command\App\ListApps(\OC::$server->getAppManager()));
-
+
$application->add(new OC\Core\Command\TwoFactorAuth\Enable(
\OC::$server->getTwoFactorAuthManager(), \OC::$server->getUserManager()
));
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 413014ab78c..2df64663d6f 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -405,6 +405,7 @@ return array(
'OC\\Core\\Command\\App\\Disable' => $baseDir . '/core/Command/App/Disable.php',
'OC\\Core\\Command\\App\\Enable' => $baseDir . '/core/Command/App/Enable.php',
'OC\\Core\\Command\\App\\GetPath' => $baseDir . '/core/Command/App/GetPath.php',
+ 'OC\\Core\\Command\\App\\Install' => $baseDir . '/core/Command/App/Install.php',
'OC\\Core\\Command\\App\\ListApps' => $baseDir . '/core/Command/App/ListApps.php',
'OC\\Core\\Command\\Background\\Ajax' => $baseDir . '/core/Command/Background/Ajax.php',
'OC\\Core\\Command\\Background\\Base' => $baseDir . '/core/Command/Background/Base.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index dce8b1b69ce..9f87c1060a2 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -435,6 +435,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Core\\Command\\App\\Disable' => __DIR__ . '/../../..' . '/core/Command/App/Disable.php',
'OC\\Core\\Command\\App\\Enable' => __DIR__ . '/../../..' . '/core/Command/App/Enable.php',
'OC\\Core\\Command\\App\\GetPath' => __DIR__ . '/../../..' . '/core/Command/App/GetPath.php',
+ 'OC\\Core\\Command\\App\\Install' => __DIR__ . '/../../..' . '/core/Command/App/Install.php',
'OC\\Core\\Command\\App\\ListApps' => __DIR__ . '/../../..' . '/core/Command/App/ListApps.php',
'OC\\Core\\Command\\Background\\Ajax' => __DIR__ . '/../../..' . '/core/Command/Background/Ajax.php',
'OC\\Core\\Command\\Background\\Base' => __DIR__ . '/../../..' . '/core/Command/Background/Base.php',