From c6111e442c7ba2257e86f0ff55859b85f90956ec Mon Sep 17 00:00:00 2001 From: VicDeo Date: Wed, 9 Oct 2019 17:03:50 +0300 Subject: [PATCH 1/2] Collect known locations from old and new signature.json as well --- .../ExecuteCoreUpgradeScriptsCommand.php | 22 ++++++++--- src/Utils/Locator.php | 39 ++++++++++++++++++- 2 files changed, 54 insertions(+), 7 deletions(-) diff --git a/src/Command/ExecuteCoreUpgradeScriptsCommand.php b/src/Command/ExecuteCoreUpgradeScriptsCommand.php index 6b6746da..13b8d481 100644 --- a/src/Command/ExecuteCoreUpgradeScriptsCommand.php +++ b/src/Command/ExecuteCoreUpgradeScriptsCommand.php @@ -123,11 +123,21 @@ protected function execute(InputInterface $input, OutputInterface $output){ return 1; } - foreach ($locator->getRootDirContent() as $dir){ + $rootDirContent = array_unique( + array_merge( + $locator->getRootDirContent(), + $locator->getRootDirItemsFromSignature($oldSourcesDir), + $locator->getRootDirItemsFromSignature($newSourcesDir) + ) + ); + foreach ($rootDirContent as $dir){ + if ($dir === 'updater') { + continue; + } $this->getApplication()->getLogger()->debug('Replacing ' . $dir); $fsHelper->tripleMove($oldSourcesDir, $newSourcesDir, $tmpDir, $dir); } - + $fsHelper->copyr($tmpDir . '/config/config.php', $oldSourcesDir . '/config/config.php'); //Get a new shipped apps list @@ -145,7 +155,7 @@ protected function execute(InputInterface $input, OutputInterface $output){ $output->writeln('Copying the application ' . $appId); $fsHelper->copyr($newAppsDir . '/' . $appId, $locator->getOwnCloudRootPath() . '/apps/' . $appId, false); } - + try { $plain = $this->occRunner->run('upgrade'); $output->writeln($plain); @@ -189,12 +199,12 @@ protected function loadVersion($pathToPackage){ */ protected function loadAllowedPreviousVersions($pathToPackage) { $canBeUpgradedFrom = $this->loadCanBeUpgradedFrom($pathToPackage); - + $firstItem = reset($canBeUpgradedFrom); if (!is_array($firstItem)){ $canBeUpgradedFrom = [$canBeUpgradedFrom]; } - + $allowedVersions = []; foreach ($canBeUpgradedFrom as $version){ $allowedVersions[] = implode('.', $version); @@ -202,7 +212,7 @@ protected function loadAllowedPreviousVersions($pathToPackage) { return $allowedVersions; } - + /** * @param string $pathToPackage * @return array diff --git a/src/Utils/Locator.php b/src/Utils/Locator.php index 13ad35a6..9587b571 100644 --- a/src/Utils/Locator.php +++ b/src/Utils/Locator.php @@ -32,7 +32,7 @@ class Locator { /** * absolute path to ownCloud root - * @var string + * @var string */ protected $ownCloudRootPath; @@ -119,6 +119,27 @@ public function getUpdaterContent(){ ]; } + /** + * Get all files and directories in the OC root dir using signature.json as a source + * + * @param string $basePath + * + * @return array + */ + public function getRootDirItemsFromSignature($basePath) { + $signature = $this->getSignature($basePath); + $items = []; + if (isset($signature['hashes'])) { + $allItems = array_keys($signature['hashes']); + foreach ($allItems as $k => $v) { + // Get the part of the string before the first slash or entire string if there is no slash + $allItems[$k] = strtok($v, '/'); + } + $items = array_unique($allItems); + } + return $items; + } + /** * Absolute path to core root dir content * @return array @@ -264,4 +285,20 @@ public function getPathToVersionFile(){ return $this->ownCloudRootPath . '/version.php'; } + /** + * @param string $rootPath + * + * @return array|mixed + */ + private function getSignature($rootPath) { + $signature = []; + $signaturePath = $rootPath . '/core/signature.json'; + if (is_file($signaturePath)) { + $signature = \json_decode(file_get_contents($signaturePath), true); + if (!is_array($signature)) { + $signature = []; + } + } + return $signature; + } } From 8da7d502f4f86391a92e33d67ee0d2fe75043b09 Mon Sep 17 00:00:00 2001 From: VicDeo Date: Wed, 9 Oct 2019 18:32:39 +0300 Subject: [PATCH 2/2] Add changelog.md to known updater items --- src/Utils/Locator.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Utils/Locator.php b/src/Utils/Locator.php index 9587b571..9371635e 100644 --- a/src/Utils/Locator.php +++ b/src/Utils/Locator.php @@ -106,6 +106,7 @@ public function getUpdaterContent(){ 'box.json', 'composer.json', 'composer.lock', + 'CHANGELOG.md', 'CONTRIBUTING.md', 'COPYING-AGPL', 'index.php',