Exclude pre-release versions as per SemVer

As SemVer can be used apps could define a release like "10.0.0-alpha". This is something that we don't support at the moment in the server and we should filter all prereleases.

Ref https://github.com/nextcloud/server/pull/2307#issuecomment-262911588

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
This commit is contained in:
Lukas Reschke 2016-11-25 11:32:46 +01:00
parent 1967b9112c
commit 29402e2c0a
No known key found for this signature in database
GPG Key ID: B9F6980CF6E759B1
2 changed files with 45 additions and 23 deletions

View File

@ -79,17 +79,18 @@ class AppFetcher extends Fetcher {
// Filter all compatible releases // Filter all compatible releases
foreach($app['releases'] as $release) { foreach($app['releases'] as $release) {
// Exclude all nightly releases // Exclude all nightly and pre-releases
if($release['isNightly'] === false) { if($release['isNightly'] === false
&& strpos($release['version'], '-') === false) {
// Exclude all versions not compatible with the current version // Exclude all versions not compatible with the current version
$versionParser = new VersionParser(); $versionParser = new VersionParser();
$version = $versionParser->getVersion($release['rawPlatformVersionSpec']); $version = $versionParser->getVersion($release['rawPlatformVersionSpec']);
if (
if(
// Major version is bigger or equals to the minimum version of the app // Major version is bigger or equals to the minimum version of the app
version_compare($ncMajorVersion, $version->getMinimumVersion(), '>=') version_compare($ncMajorVersion, $version->getMinimumVersion(), '>=')
// Major version is smaller or equals to the maximum version of the app // Major version is smaller or equals to the maximum version of the app
&& version_compare($ncMajorVersion, $version->getMaximumVersion(), '<=')) { && version_compare($ncMajorVersion, $version->getMaximumVersion(), '<=')
) {
$releases[] = $release; $releases[] = $release;
} }
} }
@ -118,6 +119,7 @@ class AppFetcher extends Fetcher {
} }
} }
$response['data'] = array_values($response['data']);
return $response; return $response;
} }
} }

File diff suppressed because one or more lines are too long