diff --git a/src/DeprecationAnalyzer.php b/src/DeprecationAnalyzer.php index c3f1922..31e176c 100644 --- a/src/DeprecationAnalyzer.php +++ b/src/DeprecationAnalyzer.php @@ -3,6 +3,8 @@ namespace Drupal\upgrade_status; use Composer\Semver\Semver; +use Drupal\Component\Serialization\Yaml; +use Drupal\Component\Serialization\Exception\InvalidDataTypeException; use Drupal\Core\Extension\Extension; use Drupal\Core\File\FileSystemInterface; use Drupal\Core\KeyValueStore\KeyValueFactoryInterface; @@ -209,19 +211,29 @@ final class DeprecationAnalyzer { $result['data']['totals']['file_errors']++; } - // Manually add on info file incompatibility to results. - $info = $extension->info; - if (!isset($info['core_version_requirement'])) { - $result['data']['files'][$extension->getPathname()]['messages'][] = [ - 'message' => 'Add core_version_requirement: ^8 || ^9 to ' . $extension->getFilename() . ' to designate that the module is compatible with Drupal 9. See https://drupal.org/node/3070687.', - 'line' => 0, - ]; - $result['data']['totals']['errors']++; - $result['data']['totals']['file_errors']++; - } - elseif (!Semver::satisfies('9.0.0', $info['core_version_requirement'])) { + // Manually add on info file incompatibility to results. Not using + // $extension->info because that is cached in the extension cache. + try { + $info = Yaml::decode(file_get_contents($extension->getPathname())) ?: []; + if (!isset($info['core_version_requirement'])) { + $result['data']['files'][$extension->getPathname()]['messages'][] = [ + 'message' => 'Add core_version_requirement: ^8 || ^9 to ' . $extension->getFilename() . ' to designate that the module is compatible with Drupal 9. See https://drupal.org/node/3070687.', + 'line' => 0, + ]; + $result['data']['totals']['errors']++; + $result['data']['totals']['file_errors']++; + } + elseif (!Semver::satisfies('9.0.0', $info['core_version_requirement'])) { + $result['data']['files'][$extension->getPathname()]['messages'][] = [ + 'message' => "The current value core_version_requirement: {$info['core_version_requirement']} in {$extension->getFilename()} is not compatible with Drupal 9.0.0. See https://drupal.org/node/3070687.", + 'line' => 0, + ]; + $result['data']['totals']['errors']++; + $result['data']['totals']['file_errors']++; + } + } catch (InvalidDataTypeException $e) { $result['data']['files'][$extension->getPathname()]['messages'][] = [ - 'message' => "The current value core_version_requirement: {$info['core_version_requirement']} in {$extension->getFilename()} is not compatible with Drupal 9.0.0. See https://drupal.org/node/3070687.", + 'message' => 'Parse error. ' . $e->getMessage(), 'line' => 0, ]; $result['data']['totals']['errors']++;