mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-05 07:45:39 +08:00
Add --no-alt and --skip-extract option to install-pkg command
This commit is contained in:
@@ -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);
|
||||
},
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@ class InstallPkgCommand extends BaseCommand
|
||||
$this->addArgument('packages', InputArgument::REQUIRED, 'The packages will be installed, comma separated');
|
||||
$this->addOption('shallow-clone', null, null, 'Clone shallow');
|
||||
$this->addOption('custom-url', 'U', InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Specify custom source download url, e.g "php-src:https://downloads.php.net/~eric/php-8.3.0beta1.tar.gz"');
|
||||
$this->addOption('no-alt', null, null, 'Do not download alternative packages');
|
||||
$this->addOption('skip-extract', null, null, 'Skip package extraction, just download the package archive');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -66,10 +68,20 @@ class InstallPkgCommand extends BaseCommand
|
||||
$new_config['filename'] = $config['filename'];
|
||||
}
|
||||
logger()->info("Installing source {$pkg} from custom url [{$ni}/{$cnt}]");
|
||||
PackageManager::installPackage($pkg, $new_config);
|
||||
PackageManager::installPackage(
|
||||
$pkg,
|
||||
$new_config,
|
||||
allow_alt: false,
|
||||
extract: !$this->getOption('skip-extract')
|
||||
);
|
||||
} else {
|
||||
logger()->info("Fetching package {$pkg} [{$ni}/{$cnt}]");
|
||||
PackageManager::installPackage($pkg, Config::getPkg($pkg));
|
||||
PackageManager::installPackage(
|
||||
$pkg,
|
||||
Config::getPkg($pkg),
|
||||
allow_alt: !$this->getOption('no-alt'),
|
||||
extract: !$this->getOption('skip-extract')
|
||||
);
|
||||
}
|
||||
}
|
||||
$time = round(microtime(true) - START_TIME, 3);
|
||||
|
||||
Reference in New Issue
Block a user