Completed
Push — master ( e5e771...ea902a )
by Thomas
02:47
created

UpgradeShippedAppsCommand::execute()   B

Complexity

Conditions 5
Paths 6

Size

Total Lines 32
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 30

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 32
ccs 0
cts 29
cp 0
rs 8.439
cc 5
eloc 23
nc 6
nop 2
crap 30
1
<?php
2
/**
3
 * @author Victor Dubiniuk <[email protected]>
4
 *
5
 * @copyright Copyright (c) 2015, ownCloud, Inc.
6
 * @license AGPL-3.0
7
 *
8
 * This code is free software: you can redistribute it and/or modify
9
 * it under the terms of the GNU Affero General Public License, version 3,
10
 * as published by the Free Software Foundation.
11
 *
12
 * This program is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
 * GNU Affero General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU Affero General Public License, version 3,
18
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
19
 *
20
 */
21
22
namespace Owncloud\Updater\Command;
23
24
use Symfony\Component\Console\Input\InputArgument;
25
use Symfony\Component\Console\Input\InputInterface;
26
use Symfony\Component\Console\Input\InputOption;
27
use Symfony\Component\Console\Output\OutputInterface;
28
29
class UpgradeShippedAppsCommand extends Command {
30
31
	protected function configure(){
32
		$this
33
				->setName('upgrade:upgradeShippedApps')
34
				->setDescription('upgrade shipped apps [danger, might take long]')
35
		;
36
	}
37
38
	protected function execute(InputInterface $input, OutputInterface $output){
39
		$registry = $this->container['utils.registry'];
40
		$feed = $registry->get('feed');
41
42
		if ($feed){
43
			$locator = $this->container['utils.locator'];
44
			$appManager = $this->container['utils.appmanager'];
45
			$fsHelper = $this->container['utils.filesystemhelper'];
46
			
47
			$fullExtractionPath = $locator->getExtractionBaseDir() . '/' . $feed->getVersion();
48
			$newAppsDir = $fullExtractionPath . '/owncloud/apps';
49
			$tmpAppsDir = $locator->getExtractionBaseDir()
50
					. '/'
51
					. implode('.', $locator->getInstalledVersion())
52
					. '/apps'
53
			;
54
			$fsHelper->mkDir($tmpAppsDir);
55
			$shippedApps =$appManager->getShippedApps();
56
			foreach ($shippedApps as $appId){
57
				$oldPath = $appManager->getAppPath($appId);
58
				$output->writeln('Upgrading the application ' . $appId);
59
				$newPath = $newAppsDir . '/' . $appId;
60
				
61
				if (file_exists($oldPath)){
62
					$fsHelper->move($oldPath, $tmpAppsDir . '/' . $appId);
63
				}
64
				if (file_exists($newPath)){
65
					$fsHelper->move($newPath, $oldPath);
66
				}
67
			}
68
		}
69
	}
70
}
71