mirror of
https://github.com/Comfy-Org/ComfyUI-Manager.git
synced 2025-12-31 09:10:49 +08:00
refactor(core): add verbose config, improve module lookup, fix is_valid_url
- Add verbose config option to control CNR fetch logging - Improve get_module_name with cnr_id/aux_id fallback via repo_cnr_map - Fix is_valid_url misuse of try/finally that could cause runtime errors - Move SSH_URL_PATTERN to module-level constant for performance
This commit is contained in:
parent
b9def4cb6e
commit
3f0fc85b95
@ -69,7 +69,10 @@ async def _get_cnr_data(cache_mode=True, dont_wait=True):
|
|||||||
form_factor = 'git-linux'
|
form_factor = 'git-linux'
|
||||||
else:
|
else:
|
||||||
form_factor = 'other'
|
form_factor = 'other'
|
||||||
|
|
||||||
|
from comfyui_manager.glob import manager_core
|
||||||
|
verbose = manager_core.get_config().get('verbose', False)
|
||||||
|
|
||||||
while remained:
|
while remained:
|
||||||
# Add comfyui_version and form_factor to the API request
|
# Add comfyui_version and form_factor to the API request
|
||||||
sub_uri = f'{base_url}/nodes?page={page}&limit=30&comfyui_version={comfyui_ver}&form_factor={form_factor}'
|
sub_uri = f'{base_url}/nodes?page={page}&limit=30&comfyui_version={comfyui_ver}&form_factor={form_factor}'
|
||||||
@ -79,7 +82,7 @@ async def _get_cnr_data(cache_mode=True, dont_wait=True):
|
|||||||
for x in sub_json_obj['nodes']:
|
for x in sub_json_obj['nodes']:
|
||||||
full_nodes[x['id']] = x
|
full_nodes[x['id']] = x
|
||||||
|
|
||||||
if page % 5 == 0:
|
if page % 5 == 0 and verbose:
|
||||||
logging.info(f"FETCH ComfyRegistry Data: {page}/{sub_json_obj['totalPages']}")
|
logging.info(f"FETCH ComfyRegistry Data: {page}/{sub_json_obj['totalPages']}")
|
||||||
|
|
||||||
page += 1
|
page += 1
|
||||||
|
|||||||
@ -48,6 +48,8 @@ version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' i
|
|||||||
DEFAULT_CHANNEL = "https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main"
|
DEFAULT_CHANNEL = "https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main"
|
||||||
DEFAULT_CHANNEL_LEGACY = "https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main"
|
DEFAULT_CHANNEL_LEGACY = "https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main"
|
||||||
|
|
||||||
|
# SSH git URL pattern (e.g., git@github.com:user/repo.git)
|
||||||
|
SSH_URL_PATTERN = re.compile(r"^(.+@|ssh://).+:.+$")
|
||||||
|
|
||||||
default_custom_nodes_path = None
|
default_custom_nodes_path = None
|
||||||
|
|
||||||
@ -382,16 +384,25 @@ class UnifiedManager:
|
|||||||
self.processed_install = set()
|
self.processed_install = set()
|
||||||
|
|
||||||
def get_module_name(self, x):
|
def get_module_name(self, x):
|
||||||
|
# 1. Direct cnr_id lookup
|
||||||
info = self.active_nodes.get(x)
|
info = self.active_nodes.get(x)
|
||||||
if info is None:
|
if info is not None:
|
||||||
# Try to find in unknown_active_nodes by comparing normalized URLs
|
|
||||||
normalized_x = git_utils.normalize_url(x)
|
|
||||||
for url, fullpath in self.unknown_active_nodes.values():
|
|
||||||
if url is not None and git_utils.normalize_url(url) == normalized_x:
|
|
||||||
return os.path.basename(fullpath)
|
|
||||||
else:
|
|
||||||
return os.path.basename(info[1])
|
return os.path.basename(info[1])
|
||||||
|
|
||||||
|
# 2. URL/aux_id → cnr_id conversion via repo_cnr_map
|
||||||
|
cnr_info = self.get_cnr_by_repo(x)
|
||||||
|
if cnr_info is not None:
|
||||||
|
cnr_id = cnr_info['id']
|
||||||
|
info = self.active_nodes.get(cnr_id)
|
||||||
|
if info is not None:
|
||||||
|
return os.path.basename(info[1])
|
||||||
|
|
||||||
|
# 3. Fallback: search unknown_active_nodes by URL
|
||||||
|
normalized_x = git_utils.normalize_url(x)
|
||||||
|
for url, fullpath in self.unknown_active_nodes.values():
|
||||||
|
if url is not None and git_utils.normalize_url(url) == normalized_x:
|
||||||
|
return os.path.basename(fullpath)
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_cnr_by_repo(self, url):
|
def get_cnr_by_repo(self, url):
|
||||||
@ -1605,6 +1616,7 @@ def write_config():
|
|||||||
'always_lazy_install': get_config()['always_lazy_install'],
|
'always_lazy_install': get_config()['always_lazy_install'],
|
||||||
'network_mode': get_config()['network_mode'],
|
'network_mode': get_config()['network_mode'],
|
||||||
'db_mode': get_config()['db_mode'],
|
'db_mode': get_config()['db_mode'],
|
||||||
|
'verbose': get_config()['verbose'],
|
||||||
}
|
}
|
||||||
|
|
||||||
directory = os.path.dirname(context.manager_config_path)
|
directory = os.path.dirname(context.manager_config_path)
|
||||||
@ -1644,6 +1656,7 @@ def read_config():
|
|||||||
'network_mode': default_conf.get('network_mode', NetworkMode.PUBLIC.value).lower(),
|
'network_mode': default_conf.get('network_mode', NetworkMode.PUBLIC.value).lower(),
|
||||||
'security_level': default_conf.get('security_level', SecurityLevel.NORMAL.value).lower(),
|
'security_level': default_conf.get('security_level', SecurityLevel.NORMAL.value).lower(),
|
||||||
'db_mode': default_conf.get('db_mode', DBMode.CACHE.value).lower(),
|
'db_mode': default_conf.get('db_mode', DBMode.CACHE.value).lower(),
|
||||||
|
'verbose': get_bool('verbose', False),
|
||||||
}
|
}
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
@ -1669,6 +1682,7 @@ def read_config():
|
|||||||
'network_mode': NetworkMode.PUBLIC.value,
|
'network_mode': NetworkMode.PUBLIC.value,
|
||||||
'security_level': SecurityLevel.NORMAL.value,
|
'security_level': SecurityLevel.NORMAL.value,
|
||||||
'db_mode': DBMode.CACHE.value,
|
'db_mode': DBMode.CACHE.value,
|
||||||
|
'verbose': False,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2058,16 +2072,15 @@ class GitProgress(RemoteProgress):
|
|||||||
|
|
||||||
|
|
||||||
def is_valid_url(url):
|
def is_valid_url(url):
|
||||||
try:
|
# Check for HTTP/HTTPS URL format
|
||||||
# Check for HTTP/HTTPS URL format
|
result = urlparse(url)
|
||||||
result = urlparse(url)
|
if result.scheme and result.netloc:
|
||||||
if all([result.scheme, result.netloc]):
|
return True
|
||||||
return True
|
|
||||||
finally:
|
# Check for SSH git URL format
|
||||||
# Check for SSH git URL format
|
if SSH_URL_PATTERN.match(url):
|
||||||
pattern = re.compile(r"^(.+@|ssh://).+:.+$")
|
return True
|
||||||
if pattern.match(url):
|
|
||||||
return True
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -49,6 +49,8 @@ version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' i
|
|||||||
DEFAULT_CHANNEL = "https://raw.githubusercontent.com/Comfy-Org/ComfyUI-Manager/main"
|
DEFAULT_CHANNEL = "https://raw.githubusercontent.com/Comfy-Org/ComfyUI-Manager/main"
|
||||||
DEFAULT_CHANNEL_LEGACY = "https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main"
|
DEFAULT_CHANNEL_LEGACY = "https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main"
|
||||||
|
|
||||||
|
# SSH git URL pattern (e.g., git@github.com:user/repo.git)
|
||||||
|
SSH_URL_PATTERN = re.compile(r"^(.+@|ssh://).+:.+$")
|
||||||
|
|
||||||
default_custom_nodes_path = None
|
default_custom_nodes_path = None
|
||||||
|
|
||||||
@ -2069,16 +2071,15 @@ class GitProgress(RemoteProgress):
|
|||||||
|
|
||||||
|
|
||||||
def is_valid_url(url):
|
def is_valid_url(url):
|
||||||
try:
|
# Check for HTTP/HTTPS URL format
|
||||||
# Check for HTTP/HTTPS URL format
|
result = urlparse(url)
|
||||||
result = urlparse(url)
|
if result.scheme and result.netloc:
|
||||||
if all([result.scheme, result.netloc]):
|
return True
|
||||||
return True
|
|
||||||
finally:
|
# Check for SSH git URL format
|
||||||
# Check for SSH git URL format
|
if SSH_URL_PATTERN.match(url):
|
||||||
pattern = re.compile(r"^(.+@|ssh://).+:.+$")
|
return True
|
||||||
if pattern.match(url):
|
|
||||||
return True
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
[project]
|
[project]
|
||||||
name = "comfyui-manager"
|
name = "comfyui-manager"
|
||||||
license = { text = "GPL-3.0-only" }
|
license = { text = "GPL-3.0-only" }
|
||||||
version = "4.0.3b7"
|
version = "4.0.3"
|
||||||
requires-python = ">= 3.9"
|
requires-python = ">= 3.9"
|
||||||
description = "ComfyUI-Manager provides features to install and manage custom nodes for ComfyUI, as well as various functionalities to assist with ComfyUI."
|
description = "ComfyUI-Manager provides features to install and manage custom nodes for ComfyUI, as well as various functionalities to assist with ComfyUI."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user