findTargetDescriptionFiles(TDF_PATH); print count($xmlFiles) . ' target description files found in ' . TDF_PATH . PHP_EOL . PHP_EOL; } else { $xmlFiles = [new \SplFileInfo(TDF_PATH)]; } $processedTargetConfigValues = []; $failedValidationCount = 0; foreach ($xmlFiles as $xmlFile) { $xmlFilePath = $xmlFile->getPathname(); print 'Processing ' . $xmlFilePath . PHP_EOL; $xmlDocument = new \DOMDocument(); $xmlDocument->load($xmlFilePath); $targetDescriptionFile = $xmlService->fromXml($xmlDocument); $validationFailures = $targetDescriptionFile instanceof Avr8TargetDescriptionFile ? $avrValidationService->validateAvr8Tdf($targetDescriptionFile) : $rvValidationService->validateRiscVTdf($targetDescriptionFile); if (in_array($targetDescriptionFile->getConfigurationValue(), $processedTargetConfigValues)) { $validationFailures[] = 'Duplicate target configuration value ("' . $targetDescriptionFile->getConfigurationValue() . '")'; } if (!empty($validationFailures)) { $failedValidationCount++; print "\033[31m"; print 'Validation for ' . $xmlFilePath . ' failed' . PHP_EOL; print count($validationFailures) . ' failure(s):' . PHP_EOL; print implode(PHP_EOL, $validationFailures); print PHP_EOL . PHP_EOL; } else { print "\033[32m"; print 'Validation for ' . $xmlFilePath . ' passed' . PHP_EOL; } print "\033[0m"; $processedTargetConfigValues[] = $targetDescriptionFile->getConfigurationValue(); } print 'Validated ' . count($xmlFiles) . ' TDFs' . PHP_EOL; print (($failedValidationCount > 0) ? "\033[31m" : "\033[32m"); print $failedValidationCount . ' TDF(s) with failures' . "\033[0m" . PHP_EOL; print 'Done' . PHP_EOL; if ($failedValidationCount > 0) { exit(1); }