File size: 3,030 Bytes
1875ee2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import os
import sys
import shutil

from core.settings import *

def move_and_overwrite(src, dst):
    if os.path.isdir(src):
        if os.path.exists(dst):
            shutil.rmtree(dst)
        shutil.move(src, dst)
    elif os.path.isfile(src):
        if os.path.exists(dst):
            os.remove(dst)
        shutil.move(src, dst)

def initialize_comfyui():
    APP_DIR = sys.path[0]
    COMFYUI_TEMP_DIR = "ComfyUI_temp"

    print("--- Cloning ComfyUI Repository ---")
    if not os.path.exists(COMFYUI_TEMP_DIR):
        os.system(f"git clone https://github.com/comfyanonymous/ComfyUI {COMFYUI_TEMP_DIR}")
        print("βœ… ComfyUI repository cloned.")
    else:
        print("βœ… ComfyUI repository already exists.")

    print(f"--- Merging ComfyUI from '{COMFYUI_TEMP_DIR}' to '{APP_DIR}' ---")
    for item in os.listdir(COMFYUI_TEMP_DIR):
        src_path = os.path.join(COMFYUI_TEMP_DIR, item)
        dst_path = os.path.join(APP_DIR, item)
        if item == '.git':
            continue
        move_and_overwrite(src_path, dst_path)
    
    try:
        shutil.rmtree(COMFYUI_TEMP_DIR)
        print("βœ… ComfyUI merged and temporary directory removed.")
    except OSError as e:
        print(f"⚠️ Could not remove temporary directory '{COMFYUI_TEMP_DIR}': {e}")


    print("--- Cloning third-party extensions for ComfyUI ---")
    controlnet_aux_path = os.path.join(APP_DIR, "custom_nodes", "comfyui_controlnet_aux")
    if not os.path.exists(controlnet_aux_path):
        os.system(f"git clone https://github.com/Fannovel16/comfyui_controlnet_aux.git {controlnet_aux_path}")
        print("βœ… comfyui_controlnet_aux extension cloned.")
    else:
        print("βœ… comfyui_controlnet_aux extension already exists.")

    ipadapter_plus_path = os.path.join(APP_DIR, "custom_nodes", "ComfyUI_IPAdapter_plus")
    if not os.path.exists(ipadapter_plus_path):
        os.system(f"git clone https://github.com/cubiq/ComfyUI_IPAdapter_plus.git {ipadapter_plus_path}")
        print("βœ… ComfyUI_IPAdapter_plus extension cloned.")
    else:
        print("βœ… ComfyUI_IPAdapter_plus extension already exists.")

    print(f"βœ… Current working directory is: {os.getcwd()}")
    
    import comfy.model_management
    print("--- Environment Ready ---")

    print("βœ… ComfyUI initialized with default attention mechanism.")

    os.makedirs(os.path.join(APP_DIR, CHECKPOINT_DIR), exist_ok=True)
    os.makedirs(os.path.join(APP_DIR, LORA_DIR), exist_ok=True)
    os.makedirs(os.path.join(APP_DIR, EMBEDDING_DIR), exist_ok=True)
    os.makedirs(os.path.join(APP_DIR, CONTROLNET_DIR), exist_ok=True)
    os.makedirs(os.path.join(APP_DIR, DIFFUSION_MODELS_DIR), exist_ok=True)
    os.makedirs(os.path.join(APP_DIR, VAE_DIR), exist_ok=True)
    os.makedirs(os.path.join(APP_DIR, TEXT_ENCODERS_DIR), exist_ok=True)
    os.makedirs(os.path.join(APP_DIR, INPUT_DIR), exist_ok=True)
    print("βœ… All required model directories are present.")