public static function getPackagesData($packagesPath)
{
$packagesData = array();
$packagesDirectoryIterator = new \DirectoryIterator($packagesPath);
foreach ($packagesDirectoryIterator as $categoryFileInfo) {
$category = $categoryFileInfo->getFilename();
if (!$categoryFileInfo->isDir() || $category[0] === '.' || $category === 'Libraries') {
continue;
}
$categoryDirectoryIterator = new \DirectoryIterator($categoryFileInfo->getPathname());
foreach ($categoryDirectoryIterator as $packageFileInfo) {
$packageKey = $packageFileInfo->getFilename();
if (!$packageFileInfo->isDir() || $packageKey[0] === '.') {
continue;
}
$meta = self::readPackageMetaData(Files::concatenatePaths(array($packageFileInfo->getPathname(), 'Meta/Package.xml')));
$composerManifest = self::readComposerManifest(Files::concatenatePaths(array($packageFileInfo->getPathname(), 'composer.json')));
$packagesData[$packageKey] = array('packageKey' => $packageKey, 'category' => $category, 'path' => $packageFileInfo->getPathname(), 'meta' => $meta, 'composerManifest' => $composerManifest);
}
}
return $packagesData;
}