From 630a2e7ddfe10a61369bbdbf595b8c24fe8b916d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Tue, 5 Sep 2023 22:06:30 +0200 Subject: [PATCH] [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 591278f5dd157..09316299b319f 100644 --- a/sdk/tools/winesync/winesync.py +++ b/sdk/tools/winesync/winesync.py @@ -99,7 +99,7 @@ def create_or_checkout_wine_branch(self, wine_tag, wine_staging_tag): # 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 @@ def wine_to_reactos_path(self, wine_path): # 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 @@ def revert_staged_patchset(self): 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(