mirror of
https://git.datalinker.icu/ltdrdata/ComfyUI-Manager
synced 2025-12-08 21:54:26 +08:00
73 lines
1.9 KiB
Python
73 lines
1.9 KiB
Python
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
import os
|
|
|
|
from git_utils import get_commit_hash
|
|
|
|
|
|
@dataclass
|
|
class InstalledNodePackage:
|
|
"""Information about an installed node package."""
|
|
|
|
id: str
|
|
fullpath: str
|
|
disabled: bool
|
|
version: str
|
|
|
|
@property
|
|
def is_unknown(self) -> bool:
|
|
return self.version == "unknown"
|
|
|
|
@property
|
|
def is_nightly(self) -> bool:
|
|
return self.version == "nightly"
|
|
|
|
@property
|
|
def is_from_cnr(self) -> bool:
|
|
return not self.is_unknown and not self.is_nightly
|
|
|
|
@property
|
|
def is_enabled(self) -> bool:
|
|
return not self.disabled
|
|
|
|
@property
|
|
def is_disabled(self) -> bool:
|
|
return self.disabled
|
|
|
|
def get_commit_hash(self) -> str:
|
|
return get_commit_hash(self.fullpath)
|
|
|
|
def isValid(self) -> bool:
|
|
if self.is_from_cnr:
|
|
return os.path.exists(os.path.join(self.fullpath, '.tracking'))
|
|
|
|
return True
|
|
|
|
@staticmethod
|
|
def from_fullpath(fullpath: str, resolve_from_path) -> InstalledNodePackage:
|
|
parent_folder_name = os.path.basename(os.path.dirname(fullpath))
|
|
module_name = os.path.basename(fullpath)
|
|
|
|
if module_name.endswith(".disabled"):
|
|
node_id = module_name[:-9]
|
|
disabled = True
|
|
elif parent_folder_name == ".disabled":
|
|
# Nodes under custom_nodes/.disabled/* are disabled
|
|
node_id = module_name
|
|
disabled = True
|
|
else:
|
|
node_id = module_name
|
|
disabled = False
|
|
|
|
info = resolve_from_path(fullpath)
|
|
if info is None:
|
|
version = 'unknown'
|
|
else:
|
|
node_id = info['id'] # robust module guessing
|
|
version = info['ver']
|
|
|
|
return InstalledNodePackage(
|
|
id=node_id, fullpath=fullpath, disabled=disabled, version=version
|
|
)
|