From bbcaffea86f19dcab71a249cd8baeb81a121973c Mon Sep 17 00:00:00 2001 From: jisse Reitsma Date: Mon, 2 Oct 2023 13:36:24 +0200 Subject: [PATCH] Add validation for extra.replace structure --- src/Composer/Service/ReplaceBuilder.php | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/Composer/Service/ReplaceBuilder.php b/src/Composer/Service/ReplaceBuilder.php index 8db4ab3..5020204 100644 --- a/src/Composer/Service/ReplaceBuilder.php +++ b/src/Composer/Service/ReplaceBuilder.php @@ -346,6 +346,30 @@ public function getErrors(): array } } + return array_merge($errors, $this->getErrorsFromBasicStructure()); + } + + private function getErrorsFromBasicStructure(): array + { + $errors = []; + + $jsonData = $this->readJsonData(); + if (!isset($jsonData['extra'])) { + return ['No section "extra" yet']; + } + + if (!isset($jsonData['extra']['replace'])) { + return ['No section "extra.replace" yet']; + } + + $elements = array_keys($jsonData['extra']['replace']); + $allowedElements = ['bulk', 'include', 'exclude']; + foreach ($elements as $element) { + if (!in_array($element, $allowedElements)) { + $errors[] = 'Unknown element "'.$element.'" in section "extra.replace"'; + } + } + return $errors; }