1212
1313use function array_filter ;
1414use function array_map ;
15+ use function count ;
1516use function file_put_contents ;
1617use function reset ;
1718use function sys_get_temp_dir ;
@@ -34,7 +35,7 @@ public function latestReleaseMetadata(): ReleaseMetadata
3435 {
3536 $ url = $ this ->githubApiBaseUrl . self ::PIE_LATEST_RELEASE_URL ;
3637
37- $ decodedRepsonse = $ this ->httpDownloader ->get (
38+ $ decodedResponse = $ this ->httpDownloader ->get (
3839 $ url ,
3940 [
4041 'retry-auth-failure ' => true ,
@@ -45,11 +46,11 @@ public function latestReleaseMetadata(): ReleaseMetadata
4546 ],
4647 )->decodeJson ();
4748
48- Assert::isArray ($ decodedRepsonse );
49- Assert::keyExists ($ decodedRepsonse , 'tag_name ' );
50- Assert::stringNotEmpty ($ decodedRepsonse ['tag_name ' ]);
51- Assert::keyExists ($ decodedRepsonse , 'assets ' );
52- Assert::isList ($ decodedRepsonse ['assets ' ]);
49+ Assert::isArray ($ decodedResponse );
50+ Assert::keyExists ($ decodedResponse , 'tag_name ' );
51+ Assert::stringNotEmpty ($ decodedResponse ['tag_name ' ]);
52+ Assert::keyExists ($ decodedResponse , 'assets ' );
53+ Assert::isList ($ decodedResponse ['assets ' ]);
5354
5455 $ assetsNamedPiePhar = array_filter (
5556 array_map (
@@ -62,16 +63,21 @@ static function (array $asset): array {
6263
6364 return $ asset ;
6465 },
65- $ decodedRepsonse ['assets ' ],
66+ $ decodedResponse ['assets ' ],
6667 ),
6768 static function (array $ asset ): bool {
6869 return $ asset ['name ' ] === self ::PIE_PHAR_NAME ;
6970 },
7071 );
72+
73+ if (! count ($ assetsNamedPiePhar )) {
74+ throw PiePharMissingFromLatestRelease::fromRelease ($ decodedResponse ['tag_name ' ]);
75+ }
76+
7177 $ firstAssetNamedPiePhar = reset ($ assetsNamedPiePhar );
7278
7379 return new ReleaseMetadata (
74- $ decodedRepsonse ['tag_name ' ],
80+ $ decodedResponse ['tag_name ' ],
7581 $ firstAssetNamedPiePhar ['browser_download_url ' ],
7682 );
7783 }
0 commit comments