From c49be91aa0f9c6fd787c08fdcfcea0e21d3e0607 Mon Sep 17 00:00:00 2001 From: Will Miao <13051207myq@gmail.com> Date: Mon, 15 Sep 2025 16:04:20 +0800 Subject: [PATCH] refactor(update_routes): exclude civitai folder from plugin update process --- py/routes/update_routes.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/py/routes/update_routes.py b/py/routes/update_routes.py index d139ce77..bf77baaf 100644 --- a/py/routes/update_routes.py +++ b/py/routes/update_routes.py @@ -154,7 +154,7 @@ class UpdateRoutes: async def _download_and_replace_zip(plugin_root: str) -> tuple[bool, str]: """ Download latest release ZIP from GitHub and replace plugin files. - Skips settings.json. Writes extracted file list to .tracking. + Skips settings.json and civitai folder. Writes extracted file list to .tracking. """ repo_owner = "willmiao" repo_name = "ComfyUI-Lora-Manager" @@ -193,7 +193,8 @@ class UpdateRoutes: zip_path = tmp_zip_path - UpdateRoutes._clean_plugin_folder(plugin_root, skip_files=['settings.json']) + # Skip both settings.json and civitai folder + UpdateRoutes._clean_plugin_folder(plugin_root, skip_files=['settings.json', 'civitai']) # Extract ZIP to temp dir with tempfile.TemporaryDirectory() as tmp_dir: @@ -202,17 +203,17 @@ class UpdateRoutes: # Find extracted folder (GitHub ZIP contains a root folder) extracted_root = next(os.scandir(tmp_dir)).path - # Copy files, skipping settings.json + # Copy files, skipping settings.json and civitai folder for item in os.listdir(extracted_root): + if item == 'settings.json' or item == 'civitai': + continue src = os.path.join(extracted_root, item) dst = os.path.join(plugin_root, item) if os.path.isdir(src): if os.path.exists(dst): shutil.rmtree(dst) - shutil.copytree(src, dst, ignore=shutil.ignore_patterns('settings.json')) + shutil.copytree(src, dst, ignore=shutil.ignore_patterns('settings.json', 'civitai')) else: - if item == 'settings.json': - continue shutil.copy2(src, dst) # Write .tracking file: list all files under extracted_root, relative to extracted_root @@ -220,8 +221,15 @@ class UpdateRoutes: tracking_info_file = os.path.join(plugin_root, '.tracking') tracking_files = [] for root, dirs, files in os.walk(extracted_root): + # Skip civitai folder and its contents + rel_root = os.path.relpath(root, extracted_root) + if rel_root == 'civitai' or rel_root.startswith('civitai' + os.sep): + continue for file in files: rel_path = os.path.relpath(os.path.join(root, file), extracted_root) + # Skip settings.json and any file under civitai + if rel_path == 'settings.json' or rel_path.startswith('civitai' + os.sep): + continue tracking_files.append(rel_path.replace("\\", "/")) with open(tracking_info_file, "w", encoding='utf-8') as file: file.write('\n'.join(tracking_files))