Browse Source

support disable.py/enable.py scripts

pull/33/head
Dr.Lt.Data 1 year ago
parent
commit
3dcf04e324
  1. 30
      README.md
  2. 11
      __init__.py
  3. 2
      custom-node-list.json
  4. 90
      extension-node-map.json
  5. 11
      prestartup_script.py

30
README.md

@ -74,6 +74,7 @@ You can execute ComfyUI by running either `./run_gpu.sh` or `./run_cpu.sh` depen
* Please submit a pull request to update either the custom-node-list.json or model-list.json file.
* The scanner currently provides a detection function for missing nodes, which is capable of detecting nodes described by the following two patterns.
* Or you can provide manually `node_list.js` file.
```
NODE_CLASS_MAPPINGS = {
@ -88,6 +89,16 @@ NODE_CLASS_MAPPINGS.update({
})
```
* **Special purpose files** (optional)
* `node_list.js` - When your custom nodes pattern of NODE_CLASS_MAPPINGS is not conventional, it is used to manually provide a list of nodes for reference. ([example](https://github.com/melMass/comfy_mtb/raw/main/node_list.json))
* `requirements.txt` - When installing, this pip requirements will be installed automatically
* `install.py` - When installing, it is automatically called
* `uninstall.py` - When uninstalling, it is automatically called
* `disable.py` - When disabled, it is automatically called
* When installing a custom node setup `.js` file, it is recommended to write this script for disabling.
* `enable.py` - When enabled, it is automatically called
# Support of missing nodes installation
![missing-menu](misc/missing-menu.png)
@ -115,15 +126,16 @@ NODE_CLASS_MAPPINGS.update({
# Roadmap
* installation from git url
* 3rd party repository
* category/keyword filter
* Specification of custom nodes
* Specification scanner
* Search extension by node name
* Automatic recognition of missing custom nodes
* Automatic installation suggestion of missing custom nodes
* workflow downloader
- [x] category/keyword filter
- [x] Automatic recognition of missing custom nodes
- [x] Automatic installation suggestion of missing custom nodes
- [ ] installation from git url
- [ ] 3rd party repository
- [ ] Specification of custom nodes
- [ ] Specification scanner
- [ ] Search extension by node name
- [ ] workflow downloader
# Disclaimer

11
__init__.py

@ -32,7 +32,7 @@ sys.path.append('../..')
from torchvision.datasets.utils import download_url
# ensure .js
print("### Loading: ComfyUI-Manager (V0.13)")
print("### Loading: ComfyUI-Manager (V0.14)")
comfy_ui_revision = "Unknown"
@ -656,6 +656,15 @@ def gitclone_set_active(files, is_disable):
os.rename(current_path, new_path)
if is_disable:
if os.path.exists(os.path.join(new_path, "disable.py")):
disable_script = [sys.executable, "disable.py"]
try_install_script(url, new_path, disable_script)
else:
if os.path.exists(os.path.join(new_path, "enable.py")):
enable_script = [sys.executable, "enable.py"]
try_install_script(url, new_path, enable_script)
except Exception as e:
print(f"{action_name}(git-clone) error: {url} / {e}")
return False

2
custom-node-list.json

@ -756,7 +756,7 @@
"https://github.com/ArtVentureX/comfyui-animatediff"
],
"install_type": "git-clone",
"description": "AnimateDiff integration for ComfyUI, adapts from sd-webui-animatediff."
"description": "AnimateDiff integration for ComfyUI, adapts from sd-webui-animatediff.<br><p style='background-color: black; color: red;'>You only need to download one of <a href='https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v14.ckpt'>mm_sd_v14.ckpt</a> | <a href='https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15.ckpt'>mm_sd_v15.ckpt</a>. Put the model weights under <b>comfyui-animatediff/models/<b>. DO NOT change model filename.</p>"
},
{
"author": "twri",

90
extension-node-map.json

@ -725,51 +725,51 @@
"Swap Color Mode"
],
"https://github.com/evanspearman/ComfyMath": [
"BreakoutVec2",
"BreakoutVec3",
"BreakoutVec4",
"ComposeVec2",
"ComposeVec3",
"ComposeVec4",
"FloatToInt",
"FloatToNumber",
"IntToFloat",
"IntToNumber",
"NumberToFloat",
"NumberToInt",
"Vec2Add",
"Vec2Cross",
"Vec2Distance",
"Vec2Dot",
"Vec2Eq",
"Vec2Ne",
"Vec2Neg",
"Vec2Norm",
"Vec2Normalize",
"Vec2ScalarMul",
"Vec2Sub",
"Vec3Add",
"Vec3Cross",
"Vec3Distance",
"Vec3Dot",
"Vec3Eq",
"Vec3Ne",
"Vec3Neg",
"Vec3Norm",
"Vec3Normalize",
"Vec3ScalarMul",
"Vec3Sub",
"Vec4Add",
"Vec4Cross",
"Vec4Distance",
"Vec4Dot",
"Vec4Eq",
"Vec4Ne",
"Vec4Neg",
"Vec4Norm",
"Vec4Normalize",
"Vec4ScalarMul",
"Vec4Sub"
"CM_BreakoutVec2",
"CM_BreakoutVec3",
"CM_BreakoutVec4",
"CM_ComposeVec2",
"CM_ComposeVec3",
"CM_ComposeVec4",
"CM_FloatBinaryCondition",
"CM_FloatBinaryOperation",
"CM_FloatToInt",
"CM_FloatToNumber",
"CM_FloatUnaryCondition",
"CM_FloatUnaryOperation",
"CM_IntBinaryCondition",
"CM_IntBinaryOperation",
"CM_IntToFloat",
"CM_IntToNumber",
"CM_IntUnaryCondition",
"CM_IntUnaryOperation",
"CM_NumberBinaryCondition",
"CM_NumberBinaryOperation",
"CM_NumberToFloat",
"CM_NumberToInt",
"CM_NumberUnaryCondition",
"CM_NumberUnaryOperation",
"CM_Vec2BinaryCondition",
"CM_Vec2BinaryOperation",
"CM_Vec2ScalarOperation",
"CM_Vec2ToScalarBinaryOperation",
"CM_Vec2ToScalarUnaryOperation",
"CM_Vec2UnaryCondition",
"CM_Vec2UnaryOperation",
"CM_Vec3BinaryCondition",
"CM_Vec3BinaryOperation",
"CM_Vec3ScalarOperation",
"CM_Vec3ToScalarBinaryOperation",
"CM_Vec3ToScalarUnaryOperation",
"CM_Vec3UnaryCondition",
"CM_Vec3UnaryOperation",
"CM_Vec4BinaryCondition",
"CM_Vec4BinaryOperation",
"CM_Vec4ScalarOperation",
"CM_Vec4ToScalarBinaryOperation",
"CM_Vec4ToScalarUnaryOperation",
"CM_Vec4UnaryCondition",
"CM_Vec4UnaryOperation"
],
"https://github.com/filipemeneses/comfy_pixelization": [
"Pixelization"

11
prestartup_script.py

@ -6,7 +6,7 @@ script_list_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "st
# Check if script_list_path exists
if os.path.exists(script_list_path):
print("\n#######################################################################")
print("[ComfyUI-Manager] Starting dependency installation for the extension\n")
print("[ComfyUI-Manager] Starting dependency installation/(de)activation for the extension\n")
executed = set()
# Read each line from the file and convert it to a list using eval
@ -19,19 +19,18 @@ if os.path.exists(script_list_path):
try:
script = eval(line)
print(f"\n## Install dependency for '{script[0]}'")
print(f"\n## Execute install/(de)activation script for '{script[0]}'")
code = subprocess.run(script[1:], cwd=script[0])
if code.returncode != 0:
print(f"install script failed: {script[0]}")
print(f"install/(de)activation script failed: {script[0]}")
except Exception as e:
print(f"[ERROR] Failed to install: {line} / {e}")
print(f"[ERROR] Failed to execute install/(de)activation script: {line} / {e}")
# Remove the script_list_path file
if os.path.exists(script_list_path):
os.remove(script_list_path)
print("\n[ComfyUI-Manager] Dependency installation completed.")
print("\n[ComfyUI-Manager] Startup script completed.")
print("#######################################################################\n")

Loading…
Cancel
Save