mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-09 01:45:36 +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);
|
logger()->error($fail_msg);
|
||||||
return static::FAILURE;
|
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
|
// transform string to array
|
||||||
$libraries = array_map('trim', array_filter(explode(',', $this->getOption('with-libs'))));
|
$libraries = array_map('trim', array_filter(explode(',', $this->getOption('with-libs'))));
|
||||||
// transform string to array
|
// transform string to array
|
||||||
$extensions = array_map('trim', array_filter(explode(',', $this->getArgument('extensions'))));
|
$extensions = $this->parseExtensionList($this->getArgument('extensions'));
|
||||||
|
|
||||||
// parse rule with options
|
// parse rule with options
|
||||||
$rule = $this->parseRules();
|
$rule = $this->parseRules();
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ class DownloadCommand extends BaseCommand
|
|||||||
}
|
}
|
||||||
// mode: --for-extensions
|
// mode: --for-extensions
|
||||||
if ($for_ext = $input->getOption('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'));
|
$sources = $this->calculateSourcesByExt($ext, !$input->getOption('without-suggestions'));
|
||||||
if (PHP_OS_FAMILY !== 'Windows') {
|
if (PHP_OS_FAMILY !== 'Windows') {
|
||||||
array_unshift($sources, 'pkg-config');
|
array_unshift($sources, 'pkg-config');
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class DumpLicenseCommand extends BaseCommand
|
|||||||
$dumper = new LicenseDumper();
|
$dumper = new LicenseDumper();
|
||||||
if ($this->getOption('for-extensions') !== null) {
|
if ($this->getOption('for-extensions') !== null) {
|
||||||
// 从参数中获取要编译的 extensions,并转换为数组
|
// 从参数中获取要编译的 extensions,并转换为数组
|
||||||
$extensions = array_map('trim', array_filter(explode(',', $this->getOption('for-extensions'))));
|
$extensions = $this->parseExtensionList($this->getOption('for-extensions'));
|
||||||
// 根据提供的扩展列表获取依赖库列表并编译
|
// 根据提供的扩展列表获取依赖库列表并编译
|
||||||
[$extensions, $libraries] = DependencyUtil::getExtsAndLibs($extensions);
|
[$extensions, $libraries] = DependencyUtil::getExtsAndLibs($extensions);
|
||||||
$dumper->addExts($extensions);
|
$dumper->addExts($extensions);
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ $upx = true;
|
|||||||
|
|
||||||
// If you want to test your added extensions and libs, add below (comma separated, example `bcmath,openssl`).
|
// If you want to test your added extensions and libs, add below (comma separated, example `bcmath,openssl`).
|
||||||
$extensions = match (PHP_OS_FAMILY) {
|
$extensions = match (PHP_OS_FAMILY) {
|
||||||
'Linux', 'Darwin' => 'libxml,xlswriter,openssl',
|
'Linux', 'Darwin' => 'libxml,xlswriter,openssl,core,hash,json,standard,SPL,HASH,REFLECTION',
|
||||||
'Windows' => 'mbstring,pdo_sqlite,mbregex',
|
'Windows' => 'mbstring,pdo_sqlite,mbregex',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user