mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-07-10 03:42:49 +08:00
feat(update): composer.json 智能对比输出具体命令
This commit is contained in:
@@ -341,15 +341,8 @@ class AdminUpdateServiceBase
|
|||||||
$output->writeln("统计: 新增 {$add_count}, 删除 {$delete_count}, 更新 {$update_count}");
|
$output->writeln("统计: 新增 {$add_count}, 删除 {$delete_count}, 更新 {$update_count}");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检测now的composer依赖和最新的composer依赖
|
// 对比 composer.json 依赖差异
|
||||||
$last_composer_json = file_get_contents($last_version_dir . '/composer.json');
|
$this->compareComposerRequire($current_version_dir, $last_version_dir, $output);
|
||||||
|
|
||||||
$output->writeln($last_composer_json);
|
|
||||||
$output->writeln('请参考以上最新composer文件调整您的依赖');
|
|
||||||
|
|
||||||
// 分析出最新需要的但now没有的
|
|
||||||
|
|
||||||
// 为用户整理出要手动调整的composer命令
|
|
||||||
|
|
||||||
$output->writeln('更新完成');
|
$output->writeln('更新完成');
|
||||||
// 更新完成
|
// 更新完成
|
||||||
@@ -486,4 +479,65 @@ class AdminUpdateServiceBase
|
|||||||
}
|
}
|
||||||
closedir($handle);
|
closedir($handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function compareComposerRequire(string $current_dir, string $last_dir, Output $output): void
|
||||||
|
{
|
||||||
|
$current_composer_path = $current_dir . '/composer.json';
|
||||||
|
$last_composer_path = $last_dir . '/composer.json';
|
||||||
|
|
||||||
|
if (!file_exists($last_composer_path)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$last_composer = json_decode(file_get_contents($last_composer_path), true);
|
||||||
|
$current_composer = file_exists($current_composer_path)
|
||||||
|
? json_decode(file_get_contents($current_composer_path), true)
|
||||||
|
: [];
|
||||||
|
|
||||||
|
if (!$last_composer || !is_array($last_composer)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$last_require = $last_composer['require'] ?? [];
|
||||||
|
$current_require = ($current_composer && is_array($current_composer))
|
||||||
|
? ($current_composer['require'] ?? [])
|
||||||
|
: [];
|
||||||
|
|
||||||
|
if (empty($last_require) && empty($current_require)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$output->writeln('');
|
||||||
|
$output->writeln('Composer 依赖变更:');
|
||||||
|
|
||||||
|
$has_changes = false;
|
||||||
|
|
||||||
|
// 新增的依赖
|
||||||
|
$new_packages = array_diff_key($last_require, $current_require);
|
||||||
|
foreach ($new_packages as $package => $version) {
|
||||||
|
$output->writeln(" composer require {$package}:{$version}");
|
||||||
|
$has_changes = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除的依赖
|
||||||
|
$removed_packages = array_diff_key($current_require, $last_require);
|
||||||
|
foreach ($removed_packages as $package => $version) {
|
||||||
|
$output->writeln(" composer remove {$package}");
|
||||||
|
$has_changes = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 版本变更的依赖
|
||||||
|
$common_packages = array_intersect_key($last_require, $current_require);
|
||||||
|
foreach ($common_packages as $package => $last_version) {
|
||||||
|
$current_version = $current_require[$package];
|
||||||
|
if ($current_version !== $last_version) {
|
||||||
|
$output->writeln(" composer require {$package}:{$last_version} (版本变更, 旧版: {$current_version})");
|
||||||
|
$has_changes = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$has_changes) {
|
||||||
|
$output->writeln(' composer 依赖无变化');
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user