diff --git a/dzgui/util/symlink.py b/dzgui/util/symlink.py index 0c847e0..59528bd 100644 --- a/dzgui/util/symlink.py +++ b/dzgui/util/symlink.py @@ -15,14 +15,18 @@ def rebuild_symlinks(config: Path) -> None: steam_path = Path(path) dayz_path = PeFile.get_nested_app_path(steam_path, APPID_DAYZ) + # NOTE: unlink stale symlinks for file in dayz_path.iterdir(): - if file.is_symlink(): + if file.is_symlink() and file.exists() is False: file.unlink() workshop = get_local_mod_path(steam_path) - for uid in get_local_mod_ids(steam_path): - uid = str(uid) + # NOTE: create symlinks for missing mods + for mod_id in get_local_mod_ids(steam_path): + uid = str(mod_id) md5sum = _hash(str(uid)) - Path(dayz_path / md5sum).symlink_to(workshop / uid) + source = Path(dayz_path / md5sum) + if source.exists() is False: + source.symlink_to(workshop / uid) def clone_symlinks(config: Path) -> None: @@ -39,6 +43,7 @@ def clone_symlinks(config: Path) -> None: return # TODO: test these two operations + # use less time intensive logic like the above for file in exp_path.iterdir(): if file.is_symlink(): file.unlink()