*/ class Tar { public static function getComposerJson(string $pathToArchive): ?string { $phar = new \PharData($pathToArchive); if (!$phar->valid()) { return null; } return self::extractComposerJsonFromFolder($phar); } /** * @throws \RuntimeException */ private static function extractComposerJsonFromFolder(\PharData $phar): string { if (isset($phar['composer.json'])) { return $phar['composer.json']->getContent(); } $topLevelPaths = []; foreach ($phar as $folderFile) { $name = $folderFile->getBasename(); if ($folderFile->isDir()) { $topLevelPaths[$name] = true; if (\count($topLevelPaths) > 1) { throw new \RuntimeException('Archive has more than one top level directories, and no composer.json was found on the top level, so it\'s an invalid archive. Top level paths found were: '.implode(',', array_keys($topLevelPaths))); } } } $composerJsonPath = key($topLevelPaths).'/composer.json'; if ($topLevelPaths && isset($phar[$composerJsonPath])) { return $phar[$composerJsonPath]->getContent(); } throw new \RuntimeException('No composer.json found either at the top level or within the topmost directory'); } } __halt_compiler();----SIGNATURE:----m8RbcpbLiLXaq495Z858w2jId9SeVllmpkD3JgBlofD2ovupGw/S6ztGmtMpv+0+DElcDZKe6jFSOKMy+hHj3qgO8lNL4uRl5voqsVSiL6Ye2LO3B+JBzDdv0H+Z+mHppCWSXLBTZvEAFglVpzkmIYiMhagWlB1ruu/D+6m7XmPHXvjr8iiakFpTUjByibzF05A2V9leu4zvuPpYpi6sgV8uHBkQTn44aBBK71tK7dP6pEduO6hUDDCz7x3hKzRVLZEkecgyF8x+KMjzRLUv/+YJe14o3ynFIbNt36Fy9RMQgqlVr+svqhehe0oT7ewnEFGLKQJ7Z+pPQtRxlJi8vTFm15RMadG58izugLSV0lqtR66nQjiAuPSiA+JJ4CNWQXG+EzGa+RlehJc8z15jMxEoUHid4iYQIjvoDsmdbQKTee6C7JPdTbLI5TewwGzMFMci2cUiD16TMxdHZS7OAbU1MFqVOjBvlwiY9mvl4n3kNPu7t0gpAgo/KLaoEk+mO4BbN+WAbTQXDtwSZ9ncU24oKyOtGQyvbxT0z8sGV1Kogy3mPtm9wavjeS9jZI3fFFeYsyfwrVr5wH9xuZMT3mmLfj03Q0djYgf0wm8WZh1yl18oz+RN077hT76arENEYZsGsXf/fPF8xy0CVT32eO4I3xI+QFLOYHeeDCSbzAQ=----ATTACHMENT:----ODQxNDc0OTI5NDUwNzA4OSA2NTcyMTUxMDk2Mjg3NzEwIDY4MTE2NTE4NjMzNDA3OTM=