|
2 | 2 |
|
3 | 3 | namespace MultiTester; |
4 | 4 |
|
| 5 | +use MultiTester\Traits\ErrorHandler; |
5 | 6 | use MultiTester\Traits\MultiTesterFile; |
6 | 7 | use MultiTester\Traits\ProcStreams; |
7 | 8 | use MultiTester\Traits\StorageDirectory; |
8 | 9 | use MultiTester\Traits\TravisFile; |
9 | 10 | use MultiTester\Traits\Verbose; |
10 | | -use MultiTester\Traits\WorkingDirectory; |
11 | 11 |
|
12 | 12 | class MultiTester |
13 | 13 | { |
14 | | - use WorkingDirectory; |
| 14 | + use ErrorHandler; |
15 | 15 | use MultiTesterFile; |
16 | 16 | use TravisFile; |
17 | 17 | use StorageDirectory; |
@@ -43,7 +43,8 @@ public function exec($command, $quiet = false) |
43 | 43 | public function getComposerSettings($package, $platforms = null) |
44 | 44 | { |
45 | 45 | if (!isset($this->composerSettings[$package])) { |
46 | | - $this->composerSettings[$package] = $this->getFromFirstValidPlatform($package, $platforms); |
| 46 | + $sourceFinder = new SourceFinder($this->getWorkingDirectory()); |
| 47 | + $this->composerSettings[$package] = $sourceFinder->getFromFirstValidPlatform($package, $platforms); |
47 | 48 | } |
48 | 49 |
|
49 | 50 | return $this->composerSettings[$package]; |
@@ -272,98 +273,4 @@ protected function execCommands($commands, $quiet = false) |
272 | 273 |
|
273 | 274 | return true; |
274 | 275 | } |
275 | | - |
276 | | - protected function error($message) |
277 | | - { |
278 | | - (new Directory($this->getWorkingDirectory()))->remove(); |
279 | | - |
280 | | - throw $message instanceof MultiTesterException ? |
281 | | - new MultiTesterException($message->getMessage(), 0, $message) : |
282 | | - new MultiTesterException($message); |
283 | | - } |
284 | | - |
285 | | - private function getSourceFromLibrariesIo($package): ?array |
286 | | - { |
287 | | - $file = new File('https://libraries.io/api/Packagist/' . urlencode($package), 'json'); |
288 | | - |
289 | | - return $file->isValid() ? $file->toArray() : null; |
290 | | - } |
291 | | - |
292 | | - private function getSourceFromPackagist($package, $namespace = 'p2'): ?array |
293 | | - { |
294 | | - $file = new File("https://repo.packagist.org/$namespace/$package.json"); |
295 | | - |
296 | | - return $file->isValid() |
297 | | - ? (($file['packages'] ?? [])[$package] ?? null) |
298 | | - : null; |
299 | | - } |
300 | | - |
301 | | - private function getSourceFromPackagist2($package): ?array |
302 | | - { |
303 | | - $list = $this->getSourceFromPackagist($package); |
304 | | - |
305 | | - if (!is_array($list)) { |
306 | | - return $list; |
307 | | - } |
308 | | - |
309 | | - $listByVersion = []; |
310 | | - $previousItem = []; |
311 | | - |
312 | | - foreach ($list as $item) { |
313 | | - if (isset($item['version'])) { |
314 | | - $previousItem = array_merge($previousItem, $item); |
315 | | - $listByVersion[$item['version']] = $previousItem; |
316 | | - } |
317 | | - } |
318 | | - |
319 | | - return $listByVersion; |
320 | | - } |
321 | | - |
322 | | - private function getSourceFromPlatform($package, $platform): ?array |
323 | | - { |
324 | | - switch ($platform) { |
325 | | - case 'composer1': |
326 | | - case 'packagist1': |
327 | | - return $this->getSourceFromPackagist($package, 'p'); |
328 | | - |
329 | | - case 'composer': |
330 | | - case 'packagist': |
331 | | - case 'composer2': |
332 | | - case 'packagist2': |
333 | | - case 'packagist.org': |
334 | | - return $this->getSourceFromPackagist2($package); |
335 | | - |
336 | | - case 'libraries': |
337 | | - case 'libraries.io': |
338 | | - return $this->getSourceFromLibrariesIo($package); |
339 | | - |
340 | | - default: |
341 | | - $this->error("Unknown platform '$platform'"); |
342 | | - } |
343 | | - } |
344 | | - |
345 | | - /** |
346 | | - * @param mixed $platforms |
347 | | - */ |
348 | | - private function parsePlatformList($platforms): array |
349 | | - { |
350 | | - if (is_string($platforms)) { |
351 | | - return array_values(array_filter(preg_split('/[,\s]+/', $platforms))); |
352 | | - } |
353 | | - |
354 | | - return (array) ($platforms ?? ['packagist.org', 'libraries.io']); |
355 | | - } |
356 | | - |
357 | | - private function getFromFirstValidPlatform($package, $platforms): ?array |
358 | | - { |
359 | | - foreach ($this->parsePlatformList($platforms) as $platform) { |
360 | | - $result = $this->getSourceFromPlatform($package, $platform); |
361 | | - |
362 | | - if ($result !== null) { |
363 | | - return $result; |
364 | | - } |
365 | | - } |
366 | | - |
367 | | - return null; |
368 | | - } |
369 | 276 | } |
0 commit comments