forked from dixyes/lwmbs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdump_dependency.php
executable file
·83 lines (72 loc) · 2.32 KB
/
dump_dependency.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!php
<?php
/**
* Copyright (c) 2022 Yun Dou <[email protected]>
*
* lwmbs is licensed under Mulan PSL v2. You can use this
* software according to the terms and conditions of the
* Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
* WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
*
* See the Mulan PSL v2 for more details.
*/
require __DIR__ . '/autoload.php';
function dump_dependency($argv): int
{
Util::setErrorHandler();
$cmdArgs = Util::parseArgs(
argv: $argv,
positionalNames: [
'srcFile' => ['SRCFILE', false, __DIR__ . DIRECTORY_SEPARATOR . 'src.json', 'src.json path'],
],
namedKeys: [],
);
$srcJson = json_decode(file_get_contents($cmdArgs['positional']['srcFile']), true);
$fakeConfig = Config::fromCmdArgs([
'named' => [],
]);
foreach ($srcJson['libs'] as $name => $_) {
try {
$lib = new ("Lib$name")($fakeConfig);
} catch (Exception) {
Log::i("skip not implemented lib $name");
continue;
}
$fakeConfig->addLib($lib);
}
foreach ($fakeConfig->makeLibArray() as $name => $lib) {
$srcJson['libs'][$name]['libDeps'] = $lib->getDepNames();
}
foreach ($srcJson['exts'] as $name => &$data) {
$desc = BuiltinExtensionDesc::BUILTIN_EXTENSIONS[$name] ??
ExternExtensionDesc::EXTERN_EXTENSIONS[$name] ?? null;
if ($desc === null) {
Log::i("skip not implemented ext $name");
continue;
}
if ($desc['libDeps'] ?? null) {
$data['libDeps'] = $desc['libDeps'];
}
if ($desc['libDepsWin'] ?? null) {
$data['libDepsWin'] = $desc['libDepsWin'];
}
if ($desc['extDeps'] ?? null) {
$data['extDeps'] = $desc['extDeps'];
}
if ($desc['unixOnly'] ?? null) {
$data['unixOnly'] = $desc['unixOnly'];
}
}
file_put_contents($cmdArgs['positional']['srcFile'], json_encode(value: $srcJson, flags: JSON_PRETTY_PRINT));
return 0;
}
if (!isset($asLib)) {
$asLib = true;
exit(dump_dependency($argv));
}