From 7b73207251c8ab8a4c705677e8e5d49bd2796c51 Mon Sep 17 00:00:00 2001 From: Pavel Shevaev Date: Thu, 17 Apr 2025 20:55:42 +0300 Subject: [PATCH] Improving handling of removed files for Patch case --- config.inc.php | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/config.inc.php b/config.inc.php index d652a3f..78787fc 100644 --- a/config.inc.php +++ b/config.inc.php @@ -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);