Merge pull request #5027 from nextcloud/require-nextcloud-version-as-per-docs

Version and dependency are now required
This commit is contained in:
Morris Jobke 2017-06-12 22:33:16 -05:00 committed by GitHub
commit 6a06df824e
13 changed files with 30 additions and 62 deletions

View File

@ -15,6 +15,10 @@
<nextcloud min-version="13" max-version="13" /> <nextcloud min-version="13" max-version="13" />
</dependencies> </dependencies>
<dependencies>
<nextcloud min-version="12" max-version="12" />
</dependencies>
<settings> <settings>
<admin>OCA\OAuth2\Settings\Admin</admin> <admin>OCA\OAuth2\Settings\Admin</admin>
</settings> </settings>

View File

@ -146,11 +146,7 @@ class CheckCode extends Command implements CompletionAwareInterface {
}); });
$infoChecker->listen('InfoChecker', 'missingRequirement', function($minMax) use ($output) { $infoChecker->listen('InfoChecker', 'missingRequirement', function($minMax) use ($output) {
$output->writeln("<comment>Nextcloud $minMax version requirement missing (will be an error in Nextcloud 12 and later)</comment>"); $output->writeln("<error>Nextcloud $minMax version requirement missing</error>");
});
$infoChecker->listen('InfoChecker', 'duplicateRequirement', function($minMax) use ($output) {
$output->writeln("<error>Duplicate $minMax ownCloud version requirement found</error>");
}); });
$infoChecker->listen('InfoChecker', 'differentVersions', function($versionFile, $infoXML) use ($output) { $infoChecker->listen('InfoChecker', 'differentVersions', function($versionFile, $infoXML) use ($output) {
@ -162,7 +158,7 @@ class CheckCode extends Command implements CompletionAwareInterface {
}); });
$infoChecker->listen('InfoChecker', 'migrateVersion', function($version) use ($output) { $infoChecker->listen('InfoChecker', 'migrateVersion', function($version) use ($output) {
$output->writeln("<info>Migrate the app version to appinfo/info.xml (add <version>$version</version> to appinfo/info.xml and remove appinfo/version)</info>"); $output->writeln("<error>Migrate the app version to appinfo/info.xml (add <version>$version</version> to appinfo/info.xml and remove appinfo/version)</error>");
}); });
if(OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { if(OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) {

View File

@ -21,15 +21,15 @@
"lookup_server_connector", "lookup_server_connector",
"nextcloud_announcements", "nextcloud_announcements",
"notifications", "notifications",
"oauth2",
"password_policy", "password_policy",
"provisioning_api", "provisioning_api",
"serverinfo", "serverinfo",
"sharebymail", "sharebymail",
"survey_client", "survey_client",
"systemtags", "systemtags",
"templateeditor",
"twofactor_backupcodes",
"theming", "theming",
"twofactor_backupcodes",
"updatenotification", "updatenotification",
"user_external", "user_external",
"user_ldap", "user_ldap",

View File

@ -34,15 +34,16 @@ class InfoChecker extends BasicEmitter {
private $mandatoryFields = [ private $mandatoryFields = [
'author', 'author',
'description', 'description',
'dependencies',
'id', 'id',
'licence', 'licence',
'name', 'name',
'version',
]; ];
private $optionalFields = [ private $optionalFields = [
'bugs', 'bugs',
'category', 'category',
'default_enable', 'default_enable',
'dependencies', // TODO: Mandatory as of ownCloud 11
'documentation', 'documentation',
'namespace', 'namespace',
'ocsid', 'ocsid',
@ -50,7 +51,6 @@ class InfoChecker extends BasicEmitter {
'remote', 'remote',
'repository', 'repository',
'types', 'types',
'version',
'website', 'website',
]; ];
private $deprecatedFields = [ private $deprecatedFields = [
@ -80,29 +80,19 @@ class InfoChecker extends BasicEmitter {
$info = $this->infoParser->parse($appPath . '/appinfo/info.xml'); $info = $this->infoParser->parse($appPath . '/appinfo/info.xml');
if (isset($info['dependencies']['owncloud']['@attributes']['min-version']) && (isset($info['requiremin']) || isset($info['require']))) { if (!isset($info['dependencies']['nextcloud']['@attributes']['min-version'])) {
$this->emit('InfoChecker', 'duplicateRequirement', ['min']);
$errors[] = [ $errors[] = [
'type' => 'duplicateRequirement', 'type' => 'missingRequirement',
'field' => 'min', 'field' => 'min',
]; ];
} else if (
!isset($info['dependencies']['owncloud']['@attributes']['min-version']) &&
!isset($info['dependencies']['nextcloud']['@attributes']['min-version'])
) {
$this->emit('InfoChecker', 'missingRequirement', ['min']); $this->emit('InfoChecker', 'missingRequirement', ['min']);
} }
if (isset($info['dependencies']['owncloud']['@attributes']['max-version']) && isset($info['requiremax'])) { if (!isset($info['dependencies']['nextcloud']['@attributes']['max-version'])) {
$this->emit('InfoChecker', 'duplicateRequirement', ['max']);
$errors[] = [ $errors[] = [
'type' => 'duplicateRequirement', 'type' => 'missingRequirement',
'field' => 'max', 'field' => 'max',
]; ];
} else if (
!isset($info['dependencies']['owncloud']['@attributes']['max-version']) &&
!isset($info['dependencies']['nextcloud']['@attributes']['max-version'])
) {
$this->emit('InfoChecker', 'missingRequirement', ['max']); $this->emit('InfoChecker', 'missingRequirement', ['max']);
} }
@ -145,21 +135,7 @@ class InfoChecker extends BasicEmitter {
$versionFile = $appPath . '/appinfo/version'; $versionFile = $appPath . '/appinfo/version';
if (is_file($versionFile)) { if (is_file($versionFile)) {
$version = trim(file_get_contents($versionFile)); $version = trim(file_get_contents($versionFile));
if (isset($info['version'])) { $this->emit('InfoChecker', 'migrateVersion', [$version]);
if($info['version'] !== $version) {
$this->emit('InfoChecker', 'differentVersions',
[$version, $info['version']]);
$errors[] = [
'type' => 'differentVersions',
'message' => 'appinfo/version: ' . $version .
' - appinfo/info.xml: ' . $info['version'],
];
} else {
$this->emit('InfoChecker', 'sameVersions', [$versionFile]);
}
} else {
$this->emit('InfoChecker', 'migrateVersion', [$version]);
}
} }
return $errors; return $errors;

View File

@ -1,9 +0,0 @@
<?xml version="1.0"?>
<info>
<id>testapp-infoxml-version</id>
<version>1.2.3</version>
<author>Jane</author>
<description>A b c</description>
<licence>Abc</licence>
<name>Test app</name>
</info>

View File

@ -1 +0,0 @@
1.2.3

View File

@ -6,4 +6,7 @@
<description>A b c</description> <description>A b c</description>
<licence>Abc</licence> <licence>Abc</licence>
<name>Test app</name> <name>Test app</name>
<dependencies>
<nextcloud min-version="12.0" max-version="12.0"/>
</dependencies>
</info> </info>

View File

@ -5,4 +5,7 @@
<author>Jane</author> <author>Jane</author>
<description>A b c</description> <description>A b c</description>
<licence>Abc</licence> <licence>Abc</licence>
<dependencies>
<nextcloud min-version="12.0" max-version="12.0"/>
</dependencies>
</info> </info>

View File

@ -1,8 +0,0 @@
<?xml version="1.0"?>
<info>
<id>testapp-version</id>
<author>Jane</author>
<description>A b c</description>
<licence>Abc</licence>
<name>Test app</name>
</info>

View File

@ -5,4 +5,7 @@
<description>A b c</description> <description>A b c</description>
<licence>Abc</licence> <licence>Abc</licence>
<name>Test app</name> <name>Test app</name>
<dependencies>
<nextcloud min-version="12.0" max-version="12.0"/>
</dependencies>
</info> </info>

View File

@ -50,10 +50,12 @@ class InfoCheckerTest extends TestCase {
public function appInfoData() { public function appInfoData() {
return [ return [
['testapp-infoxml', []], ['testapp-infoxml', []],
['testapp-version', []], ['testapp-version', [['type' => 'mandatoryFieldMissing', 'field' => 'version']]],
['testapp-infoxml-version', []], ['testapp-dependency-missing', [
['testapp-infoxml-version-different', [['type' => 'differentVersions', 'message' => 'appinfo/version: 1.2.4 - appinfo/info.xml: 1.2.3']]], ['type' => 'missingRequirement', 'field' => 'min'],
['testapp-version-missing', []], ['type' => 'missingRequirement', 'field' => 'max'],
['type' => 'mandatoryFieldMissing', 'field' => 'dependencies'],
]],
['testapp-name-missing', [['type' => 'mandatoryFieldMissing', 'field' => 'name']]], ['testapp-name-missing', [['type' => 'mandatoryFieldMissing', 'field' => 'name']]],
]; ];
} }