feat: enhance plugin update process by adding .tracking file for extracted files

This commit is contained in:
Will Miao
2025-08-05 15:46:57 +08:00
parent 6b834c2362
commit 83be5cfa64

View File

@@ -157,7 +157,7 @@ class UpdateRoutes:
async def _download_and_replace_zip(plugin_root: str) -> tuple[bool, str]: async def _download_and_replace_zip(plugin_root: str) -> tuple[bool, str]:
""" """
Download latest release ZIP from GitHub and replace plugin files. Download latest release ZIP from GitHub and replace plugin files.
Skips settings.json. Skips settings.json. Writes extracted file list to .tracking.
""" """
repo_owner = "willmiao" repo_owner = "willmiao"
repo_name = "ComfyUI-Lora-Manager" repo_name = "ComfyUI-Lora-Manager"
@@ -196,7 +196,6 @@ class UpdateRoutes:
src = os.path.join(extracted_root, item) src = os.path.join(extracted_root, item)
dst = os.path.join(plugin_root, item) dst = os.path.join(plugin_root, item)
if os.path.isdir(src): if os.path.isdir(src):
# Remove old folder, then copy
if os.path.exists(dst): if os.path.exists(dst):
shutil.rmtree(dst) shutil.rmtree(dst)
shutil.copytree(src, dst, ignore=shutil.ignore_patterns('settings.json')) shutil.copytree(src, dst, ignore=shutil.ignore_patterns('settings.json'))
@@ -205,6 +204,17 @@ class UpdateRoutes:
continue continue
shutil.copy2(src, dst) shutil.copy2(src, dst)
# Write .tracking file: list all files under extracted_root, relative to extracted_root
# for ComfyUI Manager to work properly
tracking_info_file = os.path.join(plugin_root, '.tracking')
tracking_files = []
for root, dirs, files in os.walk(extracted_root):
for file in files:
rel_path = os.path.relpath(os.path.join(root, file), extracted_root)
tracking_files.append(rel_path.replace("\\", "/"))
with open(tracking_info_file, "w", encoding='utf-8') as file:
file.write('\n'.join(tracking_files))
os.remove(zip_path) os.remove(zip_path)
logger.info(f"Updated plugin via ZIP to {version}") logger.info(f"Updated plugin via ZIP to {version}")
return True, version return True, version