From fe04451cb1fdda99b79798d21f0a229f99224250 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 9 Nov 2015 11:10:37 +0100 Subject: [PATCH] Do not allow two different version requirements --- core/command/app/checkcode.php | 4 ++++ lib/private/app/codechecker/infochecker.php | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/core/command/app/checkcode.php b/core/command/app/checkcode.php index a04f4bb5e0..e186d458c0 100644 --- a/core/command/app/checkcode.php +++ b/core/command/app/checkcode.php @@ -131,6 +131,10 @@ class CheckCode extends Command { } }); + $infoChecker->listen('InfoChecker', 'duplicateRequirement', function($minMax) use ($output) { + $output->writeln("Duplicate $minMax ownCloud version requirement found"); + }); + $infoChecker->listen('InfoChecker', 'differentVersions', function($versionFile, $infoXML) use ($output) { $output->writeln("Different versions provided (appinfo/version: $versionFile - appinfo/info.xml: $infoXML)"); }); diff --git a/lib/private/app/codechecker/infochecker.php b/lib/private/app/codechecker/infochecker.php index 91580bde07..24835d8148 100644 --- a/lib/private/app/codechecker/infochecker.php +++ b/lib/private/app/codechecker/infochecker.php @@ -77,6 +77,21 @@ class InfoChecker extends BasicEmitter { $info = $this->infoParser->parse($appPath . '/appinfo/info.xml'); + if (isset($info['dependencies']['owncloud']['@attributes']['min-version']) && ($info['requiremin'] || $info['require'])) { + $this->emit('InfoChecker', 'duplicateRequirement', ['min']); + $errors[] = [ + 'type' => 'duplicateRequirement', + 'field' => 'min', + ]; + } + if (isset($info['dependencies']['owncloud']['@attributes']['max-version']) && $info['requiremax']) { + $this->emit('InfoChecker', 'duplicateRequirement', ['max']); + $errors[] = [ + 'type' => 'duplicateRequirement', + 'field' => 'max', + ]; + } + foreach ($info as $key => $value) { if(is_array($value)) { $value = json_encode($value);