Skip to content

Commit 5a8ecaa

Browse files
committed
feat(pra): fetch latest release from GitHub API with fallback
- Use GitHub API to dynamically fetch latest phpRedisAdmin release - Show warning and use fallback when API is unreachable
1 parent e4a16b3 commit 5a8ecaa

1 file changed

Lines changed: 30 additions & 2 deletions

File tree

src/Admin_Tools_Command.php

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,8 +276,36 @@ private function install_pra( $data, $tool_path ) {
276276
$download_path = $temp_dir . 'pra.zip';
277277
$unzip_folder = $temp_dir . '/pra';
278278
$this->fs->remove( [ $download_path, $unzip_folder ] );
279-
$vendor_zip = $temp_dir . 'vendor.zip';
280-
$download_url = str_replace( '{version}', $data['version'], $data['url'] );
279+
$vendor_zip = $temp_dir . 'vendor.zip';
280+
281+
// Fetch the latest release info from GitHub API to get the zipball URL.
282+
if ( 'latest' === $data['version'] ) {
283+
$download_url = null;
284+
$release_info = @file_get_contents( $data['url'], false, stream_context_create( [
285+
'http' => [
286+
'header' => 'User-Agent: EasyEngine',
287+
],
288+
] ) );
289+
290+
if ( ! empty( $release_info ) ) {
291+
$release_data = json_decode( $release_info, true );
292+
if ( ! empty( $release_data['zipball_url'] ) ) {
293+
$download_url = $release_data['zipball_url'];
294+
}
295+
}
296+
297+
// Fallback to a known stable version if API fails.
298+
if ( empty( $download_url ) ) {
299+
if ( empty( $data['fallback_version'] ) ) {
300+
EE::error( 'Unable to fetch latest phpRedisAdmin release info from GitHub and no fallback version configured.' );
301+
}
302+
EE::warning( 'Unable to fetch latest phpRedisAdmin release info from GitHub. Falling back to version ' . $data['fallback_version'] . '.' );
303+
$download_url = 'https://github.com/erikdubbelboer/phpRedisAdmin/archive/v' . $data['fallback_version'] . '.zip';
304+
}
305+
} else {
306+
$download_url = str_replace( '{version}', $data['version'], $data['url'] );
307+
}
308+
281309
download( $download_path, $download_url );
282310
extract_zip( $download_path, $unzip_folder );
283311
$zip_folder_name = scandir( $unzip_folder );

0 commit comments

Comments
 (0)