https://git.reactos.org/?p=reactos.git;a=commitdiff;h=7f8d2d14b76807b0d42311283f44098e41733504

commit 7f8d2d14b76807b0d42311283f44098e41733504
Author:     Hermès Bélusca-Maïto <hermes.belusca-ma...@reactos.org>
AuthorDate: Tue Sep 5 22:06:30 2023 +0200
Commit:     Hermès Bélusca-Maïto <hermes.belusca-ma...@reactos.org>
CommitDate: Mon Dec 18 22:21:37 2023 +0100

    [WINESYNC] Elegantly handle empty 'files' and 'directories' lists.
    
    Expand on Timo's commit 4b5a55516.
    We may encounter cases where either the 'directories' or 'files' lists
    in the .cfg YAML files are empty, and we don't want the script to throw
    an exception in that case.
    
    Furthermore, explicitly check for such empty lists when calling PyGit2
    index.add_all(...) function, because if it's called on a None or empty
    list, _all_ untracked files in the selected git repository get added,
    which is not what we want there.
---
 sdk/tools/winesync/winesync.py | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/sdk/tools/winesync/winesync.py b/sdk/tools/winesync/winesync.py
index 680b4cfc4d6..2e769afaf49 100644
--- a/sdk/tools/winesync/winesync.py
+++ b/sdk/tools/winesync/winesync.py
@@ -99,7 +99,7 @@ class wine_sync:
     # Helper function for resolving wine tree path to reactos one
     # Note: it doesn't care about the fact that the file actually exists or not
     def wine_to_reactos_path(self, wine_path):
-        if wine_path in self.module_cfg['files']:
+        if self.module_cfg['files'] and (wine_path in 
self.module_cfg['files']):
             # we have a direct mapping
             return self.module_cfg['files'][wine_path]
 
@@ -107,11 +107,8 @@ class wine_sync:
             # root files should have a direct mapping
             return None
 
-        if self.module_cfg['directories'] is None:
-            return None
-
         wine_dir, wine_file = os.path.split(wine_path)
-        if wine_dir in self.module_cfg['directories']:
+        if self.module_cfg['directories'] and (wine_dir in 
self.module_cfg['directories']):
             # we have a mapping for the directory
             return posixpath.join(self.module_cfg['directories'][wine_dir], 
wine_file)
 
@@ -295,8 +292,13 @@ class wine_sync:
         if not has_patches:
             return True
 
-        self.reactos_index.add_all([f for f in 
self.module_cfg['files'].values()])
-        self.reactos_index.add_all([f'{d}/*.*' for d in 
self.module_cfg['directories'].values()])
+        # Note: these path lists may be empty or None, in which case
+        # we should not call index.add_all(), otherwise we would add
+        # any untracked file present in the repository.
+        if self.module_cfg['files']:
+            self.reactos_index.add_all([f for f in 
self.module_cfg['files'].values()])
+        if self.module_cfg['directories']:
+            self.reactos_index.add_all([f'{d}/*.*' for d in 
self.module_cfg['directories'].values()])
         self.reactos_index.write()
 
         self.reactos_repo.create_commit(

Reply via email to