Add --no-alt and --skip-extract option to install-pkg command

This commit is contained in:
crazywhalecc
2025-07-24 00:42:30 +08:00
parent f543b55f19
commit abd7d3cfb4
4 changed files with 67 additions and 29 deletions

View File

@@ -248,9 +248,9 @@ class DownloadCommand extends BaseCommand
$alt_sources = Config::getSource($source)['alt'] ?? null;
if ($alt_sources === null) {
logger()->warning("No alternative sources found for {$source}, using default alternative source");
$alt_config = array_merge($config, $this->getDefaultAlternativeSource($source));
$alt_config = array_merge($config, Downloader::getDefaultAlternativeSource($source));
} elseif ($alt_sources === false) {
logger()->warning("No alternative sources found for {$source}, skipping alternative download");
logger()->error("No alternative sources found for {$source}, skipping alternative download");
throw $e;
} else {
logger()->notice("Trying to download alternative sources for {$source}");
@@ -399,27 +399,4 @@ class DownloadCommand extends BaseCommand
}
return static::FAILURE;
}
private function getDefaultAlternativeSource(string $source_name): array
{
return [
'type' => 'custom',
'func' => function (bool $force, array $source, int $download_as) use ($source_name) {
logger()->debug("Fetching alternative source for {$source_name}");
// get from dl.static-php.dev
$url = "https://dl.static-php.dev/static-php-cli/deps/spc-download-mirror/{$source_name}/?format=json";
$json = json_decode(Downloader::curlExec(url: $url, retries: intval(getenv('SPC_DOWNLOAD_RETRIES') ?: 0)), true);
if (!is_array($json)) {
throw new RuntimeException('failed http fetch');
}
$item = $json[0] ?? null;
if ($item === null) {
throw new RuntimeException('failed to parse json');
}
$full_url = 'https://dl.static-php.dev' . $item['full_path'];
$filename = basename($item['full_path']);
Downloader::downloadFile($source_name, $full_url, $filename, $source['path'] ?? null, $download_as);
},
];
}
}