Skip to content
Snippets Groups Projects
Commit b08578a2 authored by Ted Bowman's avatar Ted Bowman
Browse files

Issue #3276041 by tedbow: Convert legacy version numbers to semantic version...

Issue #3276041 by tedbow: Convert legacy version numbers to semantic version numbers for extension updates
parent a7444b20
No related branches found
No related tags found
1 merge request!288Issue #3276041: Convert legacy version numbers to semantic version numbers for extension updates
......@@ -37,7 +37,7 @@ class ExtensionUpdater extends Stage {
foreach ($project_versions as $project_name => $version) {
$package = "drupal/$project_name";
$group = array_key_exists($package, $require_dev) ? 'dev' : 'production';
$package_versions[$group][$package] = $version;
$package_versions[$group][$package] = static::convertToSemanticVersion($version);
}
// Ensure that package versions are available to pre-create event
......@@ -92,4 +92,28 @@ class ExtensionUpdater extends Stage {
}
}
/**
* Converts version numbers to semantic versions if needed.
*
* @param string $project_version
* The version number.
*
* @return string
* The version number, converted if needed.
*/
private static function convertToSemanticVersion(string $project_version): string {
if (stripos($project_version, '8.x-') === 0) {
$project_version = substr($project_version, 4);
$version_parts = explode('-', $project_version);
$project_version = $version_parts[0] . '.0';
if (count($version_parts) === 2) {
$project_version .= '-' . $version_parts[1];
}
return $project_version;
}
else {
return $project_version;
}
}
}
......@@ -47,7 +47,9 @@ class ExtensionUpdaterTest extends AutomaticUpdatesKernelTestBase {
$id = $this->container->get('automatic_updates_extensions.updater')->begin([
'my_module' => '9.8.1',
'my_dev_module' => '9.8.2',
// Use a legacy version number to ensure they are converted to semantic
// version numbers which will work with the drupal.org Composer facade.
'my_dev_module' => '8.x-1.2-alpha1',
]);
// Rebuild the container to ensure the package versions are persisted.
/** @var \Drupal\Core\DrupalKernel $kernel */
......@@ -66,7 +68,7 @@ class ExtensionUpdaterTest extends AutomaticUpdatesKernelTestBase {
'drupal/my_module' => '9.8.1',
],
'dev' => [
'drupal/my_dev_module' => '9.8.2',
'drupal/my_dev_module' => '1.2.0-alpha1',
],
];
$this->assertSame($expected_versions, $extension_updater->claim($id)->getPackageVersions());
......@@ -90,13 +92,13 @@ class ExtensionUpdaterTest extends AutomaticUpdatesKernelTestBase {
'require',
'--dev',
'--no-update',
'drupal/my_dev_module:9.8.2',
'drupal/my_dev_module:1.2.0-alpha1',
],
[
'update',
'--with-all-dependencies',
'drupal/my_module:9.8.1',
'drupal/my_dev_module:9.8.2',
'drupal/my_dev_module:1.2.0-alpha1',
],
];
$extension_updater->stage();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment