Improving handling of removed files for Patch case
Publish PHP Package / docker (push) Successful in 6s Details

This commit is contained in:
Pavel Shevaev 2025-04-17 20:55:42 +03:00
parent ed2e8a4cb3
commit 7b73207251
1 changed files with 25 additions and 2 deletions

View File

@ -139,7 +139,7 @@ class ConfigManager
$removed_files = [];
$this->_checkFileMap($req, $added_files, $removed_files);
$affected_files = $this->_getAffectedFiles($req, $removed_files);
$affected_files = $this->_getAffectedFiles($req, $added_files, $removed_files);
//NOTE: at this poine taking into account only config files
$affected_files->filter(fn($file) => str_ends_with($file, '.conf.js'));
@ -213,6 +213,18 @@ class ConfigManager
list($added_files, $removed_files) = $fs_cache_map->compare($req->files->getAllFiles());
config_log("File map compare, added: ".count($added_files).", removed: ".count($removed_files));
}
else if($req->mode === ConfigUpdateMode::Patch)
{
foreach($req->files as $file)
{
//TODO: is it robust enough?
//TODO: we should make difference between changed and added!
if(file_exists($file))
$added_files[] = $file;
else
$removed_files[] = $file;
}
}
}
private function _updateFileMap(ConfigUpdateRequest $req, ConfigDirFiles $affected_files, array $added_files, array $removed_files)
@ -235,7 +247,7 @@ class ConfigManager
}
}
private function _getAffectedFiles(ConfigUpdateRequest $req, array $removed_files) : ConfigDirFiles
private function _getAffectedFiles(ConfigUpdateRequest $req, array $added_files, array $removed_files) : ConfigDirFiles
{
$fs_cache_map = $this->getFileMap();
@ -283,6 +295,17 @@ class ConfigManager
{
$affected_files = ConfigDirFiles::makeFor($this);
foreach($req->files as $file)
{
//removed config special case
if(str_ends_with($file, '.conf.js') && in_array($file, $removed_files))
{
//NOTE: let it be for now, rebuilds the whole bundle
$affected_files = $this->scanFiles(extension: '.conf.js');
return $affected_files;
}
}
foreach($req->files as $file)
{
$affected_files->addFile($file, unique: true);