2022-12-22 22:20:38 +08:00
|
|
|
|
#!/usr/bin/env php
|
|
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
function find_valid_root(string $current_dir, int $max_loop): string
|
|
|
|
|
|
{
|
|
|
|
|
|
if ($max_loop <= 0) {
|
|
|
|
|
|
return '';
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!file_exists($current_dir . '/composer.json')) {
|
|
|
|
|
|
return find_valid_root(dirname($current_dir), $max_loop - 1);
|
|
|
|
|
|
}
|
|
|
|
|
|
return $current_dir;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$root = find_valid_root(getcwd(), 3);
|
|
|
|
|
|
if (empty($root)) {
|
|
|
|
|
|
echo '找不到有效的根目录';
|
|
|
|
|
|
exit(1);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
chdir($root);
|
|
|
|
|
|
|
|
|
|
|
|
require_once $root . '/vendor/autoload.php';
|
|
|
|
|
|
|
|
|
|
|
|
// 获取参数,可为 before 或 after
|
|
|
|
|
|
$param = $argv[1] ?? 'before';
|
|
|
|
|
|
|
|
|
|
|
|
if ($param === 'before') {
|
|
|
|
|
|
// Doxyfile file source: https://pastebin.com/raw/N8tJ9kWE
|
|
|
|
|
|
// Posted by: sunxyw
|
|
|
|
|
|
|
|
|
|
|
|
// 从剪贴板获取 Doxyfile 内容并保存到临时文件
|
|
|
|
|
|
logger()->info('正在获取 Doxyfile 内容');
|
|
|
|
|
|
$doxyfile = file_get_contents('https://pastebin.com/raw/N8tJ9kWE');
|
|
|
|
|
|
$doxyfile = str_replace('<zm_version>', \ZM\Framework::VERSION, $doxyfile);
|
|
|
|
|
|
file_put_contents('Doxyfile', $doxyfile);
|
|
|
|
|
|
|
|
|
|
|
|
// 应用 Awesome 样式
|
|
|
|
|
|
// 来源:https://github.com/jothepro/doxygen-awesome-css.git
|
|
|
|
|
|
// 优先使用本地文件
|
|
|
|
|
|
logger()->info('正在应用 Awesome 样式');
|
|
|
|
|
|
\ZM\Store\FileSystem::createDir('doxy/css');
|
|
|
|
|
|
if (
|
|
|
|
|
|
file_exists('doxy/css/doxygen-awesome.css') &&
|
|
|
|
|
|
(md5_file('doxy/css/doxygen-awesome.css') === '326a1447f9693d1b3876f59de837a7c0')
|
|
|
|
|
|
) {
|
|
|
|
|
|
logger()->info('本地 Awesome 样式文件已存在,跳过下载');
|
|
|
|
|
|
} else {
|
|
|
|
|
|
logger()->info('正在下载 Awesome 样式文件');
|
|
|
|
|
|
$cmd = [
|
|
|
|
|
|
'git clone https://github.com/jothepro/doxygen-awesome-css.git doxy/css',
|
|
|
|
|
|
'cd doxy/css',
|
|
|
|
|
|
'git checkout v2.1.0',
|
|
|
|
|
|
'cd ../..',
|
|
|
|
|
|
];
|
|
|
|
|
|
$cmd = implode(' && ', $cmd);
|
|
|
|
|
|
exec($cmd);
|
|
|
|
|
|
}
|
|
|
|
|
|
} elseif ($param === 'after') {
|
|
|
|
|
|
// 删除临时文件
|
|
|
|
|
|
unlink('Doxyfile');
|
|
|
|
|
|
|
|
|
|
|
|
// 清除旧文档
|
2023-01-06 15:45:51 +08:00
|
|
|
|
exec('sudo rm -rf docs/.vuepress/public/doxy');
|
2022-12-22 22:20:38 +08:00
|
|
|
|
|
2023-01-04 16:36:37 +08:00
|
|
|
|
// 授予目录权限:doxy/html
|
2023-01-06 15:45:51 +08:00
|
|
|
|
exec('sudo chmod -R 777 doxy/html');
|
2023-01-04 16:36:37 +08:00
|
|
|
|
|
2022-12-22 22:20:38 +08:00
|
|
|
|
// 移动新文档到 docs 目录
|
2023-01-06 15:45:51 +08:00
|
|
|
|
exec('sudo mv doxy/html docs/.vuepress/public/doxy');
|
2022-12-22 22:20:38 +08:00
|
|
|
|
|
|
|
|
|
|
logger()->info('文档生成完成');
|
|
|
|
|
|
} else {
|
|
|
|
|
|
logger()->error('参数错误');
|
|
|
|
|
|
exit(1);
|
|
|
|
|
|
}
|