function DuplicateInfoFileValidator::validate

Validates the stage does not have duplicate info.yml not present in active.

File

core/modules/package_manager/src/Validator/DuplicateInfoFileValidator.php, line 31

Class

DuplicateInfoFileValidator
Validates the stage does not have duplicate info.yml not present in active.

Namespace

Drupal\package_manager\Validator

Code

public function validate(PreApplyEvent $event) : void {
  $active_dir = $this->pathLocator
    ->getProjectRoot();
  $stage_dir = $event->sandboxManager
    ->getSandboxDirectory();
  $active_info_files = $this->findInfoFiles($active_dir);
  $stage_info_files = $this->findInfoFiles($stage_dir);
  foreach ($stage_info_files as $stage_info_file => $stage_info_count) {
    if (isset($active_info_files[$stage_info_file])) {
      // Check if stage directory has more info.yml files matching
      // $stage_info_file than in the active directory.
      if ($stage_info_count > $active_info_files[$stage_info_file]) {
        $event->addError([
          $this->t('The stage directory has @stage_count instances of @stage_info_file as compared to @active_count in the active directory. This likely indicates that a duplicate extension was installed.', [
            '@stage_info_file' => $stage_info_file,
            '@stage_count' => $stage_info_count,
            '@active_count' => $active_info_files[$stage_info_file],
          ]),
        ]);
      }
    }
    elseif ($stage_info_count > 1) {
      $event->addError([
        $this->t('The stage directory has @stage_count instances of @stage_info_file. This likely indicates that a duplicate extension was installed.', [
          '@stage_info_file' => $stage_info_file,
          '@stage_count' => $stage_info_count,
        ]),
      ]);
    }
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.