mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-07-09 11:32:48 +08:00
refactor: 提取文件收集逻辑到独立方法
将重复的文件收集和忽略前缀检查代码提取为 `collectTrackedFiles` 和 `isIgnoredPath` 方法,提高代码复用性和可读性。
This commit is contained in:
@@ -126,37 +126,14 @@ class AdminUpdateServiceBase
|
|||||||
'.git',
|
'.git',
|
||||||
];
|
];
|
||||||
|
|
||||||
$filter_files_function = function (StorageAttributes $attributes) use ($ignore_prefix) {
|
|
||||||
if ($attributes->isDir()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($ignore_prefix as $prefix) {
|
|
||||||
if (str_starts_with($attributes->path(), $prefix)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 当前版本的应该被处理所有文件
|
// 当前版本的应该被处理所有文件
|
||||||
$current_version_files = $current_version_filesystem->listContents('/', true)
|
$current_version_files = $this->collectTrackedFiles($current_version_filesystem, $ignore_prefix);
|
||||||
->filter($filter_files_function)
|
|
||||||
->map(fn (StorageAttributes $attributes) => $attributes->path())
|
|
||||||
->toArray();
|
|
||||||
|
|
||||||
// 最新版本的所有文件
|
// 最新版本的所有文件
|
||||||
$last_version_files = $last_version_filesystem->listContents('/', true)
|
$last_version_files = $this->collectTrackedFiles($last_version_filesystem, $ignore_prefix);
|
||||||
->filter($filter_files_function)
|
|
||||||
->map(fn (StorageAttributes $attributes) => $attributes->path())
|
|
||||||
->toArray();
|
|
||||||
|
|
||||||
// 本身的所有文件
|
// 本身的所有文件
|
||||||
$now_files = $now_filesystem->listContents('/', true)
|
$now_files = $this->collectTrackedFiles($now_filesystem, $ignore_prefix);
|
||||||
->filter($filter_files_function)
|
|
||||||
->map(fn (StorageAttributes $attributes) => $attributes->path())
|
|
||||||
->toArray();
|
|
||||||
|
|
||||||
$changed_files = [];
|
$changed_files = [];
|
||||||
|
|
||||||
@@ -393,6 +370,37 @@ class AdminUpdateServiceBase
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function collectTrackedFiles(Filesystem $filesystem, array $ignore_prefix, string $path = '/')
|
||||||
|
{
|
||||||
|
$files = [];
|
||||||
|
|
||||||
|
foreach ($filesystem->listContents($path, false) as $attributes) {
|
||||||
|
if ($this->isIgnoredPath($attributes->path(), $ignore_prefix)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($attributes->isDir()) {
|
||||||
|
$files = array_merge($files, $this->collectTrackedFiles($filesystem, $ignore_prefix, $attributes->path()));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$files[] = $attributes->path();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $files;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function isIgnoredPath(string $path, array $ignore_prefix)
|
||||||
|
{
|
||||||
|
foreach ($ignore_prefix as $prefix) {
|
||||||
|
if (str_starts_with($path, $prefix)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
protected function cleanWorkpaceDir()
|
protected function cleanWorkpaceDir()
|
||||||
{
|
{
|
||||||
$dir = App::getRuntimePath() . '/update/';
|
$dir = App::getRuntimePath() . '/update/';
|
||||||
|
|||||||
Reference in New Issue
Block a user