-
-
Notifications
You must be signed in to change notification settings - Fork 4.7k
add occ app:install command #5644
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,77 @@ | ||
| <?php | ||
| /** | ||
| * @copyright Copyright (c) 2016, ownCloud, Inc. | ||
| * | ||
| * @author Klaus Herberth <[email protected]> | ||
| * | ||
| * @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( | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @nickvergessen do we have DI for commands? I'd prefer injecting an object over building it manually. This approach could fail as soon as the constructor parameters of change. Or maybe we could at least query the class from the DI container and have it constructed automatically.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We have "semi-injection": https://github.com/nextcloud/server/blob/master/core/register_command.php#L63 So you can build it outside. Not sure if you can do |
||
| \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; | ||
| } | ||
| } | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's about the copyright header? How should it look like?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the logic is yours add yourself
If it code from oc leave as is
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's more or less from app.php#L363, so I leave it for now.