mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-04 23:35:40 +08:00
Ignore passed internal extensions (#473)
* Ignore passed internal extensions * Add tests * Add tests
This commit is contained in:
@@ -144,4 +144,24 @@ abstract class BaseCommand extends Command
|
||||
logger()->error($fail_msg);
|
||||
return static::FAILURE;
|
||||
}
|
||||
|
||||
protected function parseExtensionList(string $ext_list): array
|
||||
{
|
||||
$a = array_map('trim', explode(',', $ext_list));
|
||||
return array_values(array_filter($a, function ($x) {
|
||||
$filter_internals = [
|
||||
'core',
|
||||
'hash',
|
||||
'json',
|
||||
'reflection',
|
||||
'spl',
|
||||
'standard',
|
||||
];
|
||||
if (in_array(strtolower($x), $filter_internals)) {
|
||||
logger()->warning("Extension [{$x}] is an builtin extension, it will be ignored.");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ class BuildCliCommand extends BuildCommand
|
||||
// transform string to array
|
||||
$libraries = array_map('trim', array_filter(explode(',', $this->getOption('with-libs'))));
|
||||
// transform string to array
|
||||
$extensions = array_map('trim', array_filter(explode(',', $this->getArgument('extensions'))));
|
||||
$extensions = $this->parseExtensionList($this->getArgument('extensions'));
|
||||
|
||||
// parse rule with options
|
||||
$rule = $this->parseRules();
|
||||
|
||||
@@ -68,7 +68,7 @@ class DownloadCommand extends BaseCommand
|
||||
}
|
||||
// mode: --for-extensions
|
||||
if ($for_ext = $input->getOption('for-extensions')) {
|
||||
$ext = array_map('trim', array_filter(explode(',', $for_ext)));
|
||||
$ext = $this->parseExtensionList($for_ext);
|
||||
$sources = $this->calculateSourcesByExt($ext, !$input->getOption('without-suggestions'));
|
||||
if (PHP_OS_FAMILY !== 'Windows') {
|
||||
array_unshift($sources, 'pkg-config');
|
||||
|
||||
@@ -37,7 +37,7 @@ class DumpLicenseCommand extends BaseCommand
|
||||
$dumper = new LicenseDumper();
|
||||
if ($this->getOption('for-extensions') !== null) {
|
||||
// 从参数中获取要编译的 extensions,并转换为数组
|
||||
$extensions = array_map('trim', array_filter(explode(',', $this->getOption('for-extensions'))));
|
||||
$extensions = $this->parseExtensionList($this->getOption('for-extensions'));
|
||||
// 根据提供的扩展列表获取依赖库列表并编译
|
||||
[$extensions, $libraries] = DependencyUtil::getExtsAndLibs($extensions);
|
||||
$dumper->addExts($extensions);
|
||||
|
||||
Reference in New Issue
Block a user