adbrasi commited on
Commit
96baf32
·
verified ·
1 Parent(s): d049461

Upload ComfyWAN_installer.sh

Browse files
Files changed (1) hide show
  1. ComfyWAN_installer.sh +226 -0
ComfyWAN_installer.sh ADDED
@@ -0,0 +1,226 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # ============================================================================
4
+ # Instalador Dinâmico para ComfyUI
5
+ # Instala o ComfyUI e suas dependências no diretório atual.
6
+ # ============================================================================
7
+
8
+ set -e
9
+ set -o pipefail
10
+
11
+ # ============================================================================
12
+ # CONFIGURAÇÕES GLOBAIS
13
+ # ============================================================================
14
+
15
+ # URL do workflow a ser baixado
16
+ readonly WORKFLOW_URL="https://huggingface.co/adbrasi/testedownload/resolve/main/modo%20balanco3.json"
17
+
18
+ # --- Caminhos Dinâmicos ---
19
+ # Define o diretório de instalação como o diretório atual onde o script é executado
20
+ readonly INSTALL_BASE_DIR="$(pwd)"
21
+ # O ComfyUI será instalado em uma subpasta "ComfyUI"
22
+ readonly WORKSPACE_DIR="$INSTALL_BASE_DIR/ComfyUI"
23
+ # O arquivo de workflow será salvo na raiz do diretório de instalação
24
+ readonly WORKFLOW_FILENAME="workflow.json"
25
+ readonly WORKFLOW_FILE="$INSTALL_BASE_DIR/$WORKFLOW_FILENAME"
26
+
27
+ # ============================================================================
28
+ # FUNÇÕES DE UTILIDADE
29
+ # ============================================================================
30
+
31
+ log_info() {
32
+ echo "INFO: $1" >&2
33
+ }
34
+
35
+ log_warning() {
36
+ echo "WARNING: $1" >&2
37
+ }
38
+
39
+ log_error() {
40
+ echo "ERROR: $1" >&2
41
+ }
42
+
43
+ command_exists() {
44
+ command -v "$1" >/dev/null 2>&1
45
+ }
46
+
47
+ # ============================================================================
48
+ # FUNÇÃO DE LIMPEZA
49
+ # ============================================================================
50
+
51
+ cleanup_existing_installation() {
52
+ log_info "Verificando instalações existentes em: $WORKSPACE_DIR"
53
+
54
+ if [ -d "$WORKSPACE_DIR" ]; then
55
+ log_warning "Diretório existente encontrado: $WORKSPACE_DIR"
56
+ log_info "Removendo a instalação existente para evitar conflitos..."
57
+ rm -rf "$WORKSPACE_DIR"
58
+ log_info "Diretório removido."
59
+ else
60
+ log_info "Nenhuma instalação anterior encontrada no local. Continuando..."
61
+ fi
62
+ }
63
+
64
+ # ============================================================================
65
+ # INSTALAÇÃO DO COMFY-CLI
66
+ # ============================================================================
67
+
68
+ install_comfy_cli() {
69
+ log_info "Instalando/atualizando comfy-cli..."
70
+
71
+ python3 -m pip install --upgrade comfy-cli || {
72
+ log_error "Falha ao instalar comfy-cli"
73
+ exit 1
74
+ }
75
+
76
+ # Verifica se o 'comfy' está no PATH
77
+ if ! command_exists comfy; then
78
+ if [ -d "$HOME/.local/bin" ] && [[ ":$PATH:" != *":$HOME/.local/bin:"* ]]; then
79
+ export PATH="$HOME/.local/bin:$PATH"
80
+ log_info "Adicionado $HOME/.local/bin ao PATH para esta sessão."
81
+ fi
82
+
83
+ if ! command_exists comfy; then
84
+ log_error "Comando 'comfy' não encontrado no PATH após a instalação."
85
+ log_error "Verifique se '$HOME/.local/bin' está em seu PATH."
86
+ exit 1
87
+ fi
88
+ fi
89
+
90
+ log_info "comfy-cli version: $(comfy --version 2>/dev/null || echo 'desconhecida')"
91
+ }
92
+
93
+ # ============================================================================
94
+ # INSTALAÇÃO DO COMFYUI
95
+ # ============================================================================
96
+
97
+ install_comfyui() {
98
+ log_info "Instalando ComfyUI em: $WORKSPACE_DIR"
99
+
100
+ # Instala ComfyUI com dependências rápidas
101
+ comfy --workspace "$WORKSPACE_DIR" --skip-prompt install --nvidia --fast-deps || {
102
+ log_error "Falha ao instalar ComfyUI"
103
+ exit 1
104
+ }
105
+
106
+ log_info "ComfyUI instalado com sucesso."
107
+ }
108
+
109
+ # ============================================================================
110
+ # DOWNLOAD DO WORKFLOW
111
+ # ============================================================================
112
+
113
+ download_workflow() {
114
+ log_info "Baixando o workflow de: $WORKFLOW_URL"
115
+ log_info "Salvando como: $WORKFLOW_FILE"
116
+
117
+ local success=false
118
+
119
+ # Tenta diferentes métodos de download
120
+ if command_exists wget; then
121
+ if wget -q --show-progress -O "$WORKFLOW_FILE" "$WORKFLOW_URL"; then
122
+ success=true
123
+ fi
124
+ elif command_exists curl; then
125
+ if curl -L -o "$WORKFLOW_FILE" "$WORKFLOW_URL"; then
126
+ success=true
127
+ fi
128
+ elif command_exists aria2c; then
129
+ # aria2c precisa do nome do arquivo e diretório separados
130
+ if aria2c -q -o "$(basename "$WORKFLOW_FILE")" -d "$(dirname "$WORKFLOW_FILE")" "$WORKFLOW_URL"; then
131
+ success=true
132
+ fi
133
+ else
134
+ log_error "Nenhuma ferramenta de download disponível (wget, curl ou aria2c)."
135
+ exit 1
136
+ fi
137
+
138
+ if ! $success; then
139
+ log_error "Falha ao baixar o arquivo do workflow."
140
+ exit 1
141
+ fi
142
+
143
+ if [ ! -f "$WORKFLOW_FILE" ]; then
144
+ log_error "O arquivo do workflow não foi baixado com sucesso."
145
+ exit 1
146
+ fi
147
+
148
+ log_info "Workflow baixado com sucesso."
149
+ }
150
+
151
+ # ============================================================================
152
+ # DEPENDÊNCIAS DO WORKFLOW
153
+ # ============================================================================
154
+
155
+ install_workflow_dependencies() {
156
+ log_info "Instalando dependências do workflow a partir de: $WORKFLOW_FILE"
157
+
158
+ if [ ! -f "$WORKFLOW_FILE" ]; then
159
+ log_error "Arquivo de workflow não encontrado: $WORKFLOW_FILE"
160
+ exit 1
161
+ fi
162
+
163
+ # Usa o workspace correto para instalar as dependências
164
+ comfy --workspace "$WORKSPACE_DIR" node install-deps --workflow="$WORKFLOW_FILE" || {
165
+ log_warning "Algumas dependências do workflow podem ter falhado ao instalar."
166
+ log_info "Isso pode ser normal. O ComfyUI mostrará os nós ausentes ao iniciar."
167
+ }
168
+
169
+ log_info "Instalação de dependências do workflow concluída."
170
+ }
171
+
172
+ # ============================================================================
173
+ # INICIAR O COMFYUI
174
+ # ============================================================================
175
+
176
+ launch_comfyui() {
177
+ log_info "Iniciando ComfyUI na porta 8818..."
178
+ log_info "Workspace do ComfyUI: $WORKSPACE_DIR"
179
+ log_info "Arquivo de workflow disponível em: $WORKFLOW_FILE"
180
+ log_info "Para usar o workflow, arraste e solte o arquivo '$WORKFLOW_FILENAME' na interface do ComfyUI."
181
+ log_info "Acesse o ComfyUI em: http://127.0.0.1:8818 (ou o IP da sua máquina)"
182
+
183
+ # Inicia o ComfyUI
184
+ exec comfy --workspace "$WORKSPACE_DIR" launch -- --fast --listen 0.0.0.0 --port 8818
185
+ }
186
+
187
+ # ============================================================================
188
+ # EXECUÇÃO PRINCIPAL
189
+ # ============================================================================
190
+
191
+ main() {
192
+ log_info "Iniciando instalação dinâmica do ComfyUI..."
193
+ log_info "Diretório de instalação base: $INSTALL_BASE_DIR"
194
+ log_info "================================================="
195
+
196
+ # Passo 1: Limpar instalações existentes no diretório alvo
197
+ cleanup_existing_installation
198
+
199
+ # Passo 2: Instalar comfy-cli
200
+ install_comfy_cli
201
+
202
+ # Passo 3: Instalar ComfyUI
203
+ install_comfyui
204
+
205
+ # Passo 4: Baixar o workflow
206
+ download_workflow
207
+
208
+ # Passo 5: Instalar dependências do workflow
209
+ install_workflow_dependencies
210
+
211
+ # Passo 6: Iniciar o ComfyUI
212
+ log_info "================================================="
213
+ log_info "Instalação concluída com sucesso!"
214
+ log_info "================================================="
215
+ launch_comfyui
216
+ }
217
+
218
+ # ============================================================================
219
+ # EXECUÇÃO DO SCRIPT
220
+ # ============================================================================
221
+
222
+ # Captura interrupções (Ctrl+C)
223
+ trap 'log_error "Script interrompido pelo usuário."; exit 1' INT TERM
224
+
225
+ # Executa a função principal
226
+ main "$@"