fix(backend): stale classifyImageRunFailure -> classifyRunFailure
Left behind by a rename; broke the img2img (issue #121) crash-detection path. Typecheck back to 0 errors.
This commit is contained in:
+94
-20
@@ -630,33 +630,87 @@ fetch_fonts() {
|
||||
# 6. Modelli
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Nomi dei file modello attesi: prima dalla configurazione scritta, poi — come ripiego —
|
||||
# dalle costanti in config.ts. Così non duplichiamo l'elenco dentro l'installer.
|
||||
model_files() {
|
||||
local from_config=""
|
||||
if [ -f "$CFG_PATH" ] && have python3; then
|
||||
from_config="$(CFG_PATH="$CFG_PATH" python3 <<'PY' 2>/dev/null || true
|
||||
# ModelsConfig (extensions/imgen/config.ts) dichiara obbligatori SOLO draft e final:
|
||||
# alt, edit e upscale sono `?` e la loro assenza non deve far fallire nulla.
|
||||
MODEL_KEYS_REQUIRED="draft final"
|
||||
MODEL_KEYS_OPTIONAL="alt edit upscale"
|
||||
|
||||
# Legge dalla configurazione scritta i modelli per le chiavi indicate, una riga
|
||||
# "chiave<TAB>file" per ciascuna chiave davvero presente e valorizzata.
|
||||
config_model_files() { # config_model_files <chiave>...
|
||||
if [ ! -f "$CFG_PATH" ] || ! have python3; then
|
||||
return 0
|
||||
fi
|
||||
CFG_PATH="$CFG_PATH" MODEL_KEYS="$*" python3 <<'PY' 2>/dev/null || true
|
||||
import json, os
|
||||
try:
|
||||
with open(os.environ["CFG_PATH"], encoding="utf-8") as fh:
|
||||
models = json.load(fh).get("models", {})
|
||||
if isinstance(models, dict):
|
||||
for name in dict.fromkeys(v for v in models.values() if isinstance(v, str) and v):
|
||||
print(name)
|
||||
for key in os.environ["MODEL_KEYS"].split():
|
||||
value = models.get(key)
|
||||
if isinstance(value, str) and value:
|
||||
print(f"{key}\t{value}")
|
||||
except Exception:
|
||||
pass
|
||||
PY
|
||||
)"
|
||||
fi
|
||||
}
|
||||
|
||||
if [ -n "$from_config" ]; then
|
||||
printf '%s\n' "$from_config"
|
||||
# Ripiego per una singola chiave: il valore in DEFAULTS.models dentro config.ts,
|
||||
# così l'elenco non viene duplicato qui dentro.
|
||||
default_model_file() { # default_model_file <chiave>
|
||||
sed -n "s/^[[:space:]]*$1:[[:space:]]*\"\([A-Za-z0-9_.-]*\.ckpt\)\".*/\1/p" \
|
||||
"$REPO_DIR/extensions/imgen/config.ts" 2>/dev/null | head -n 1
|
||||
}
|
||||
|
||||
# I file attesi per un gruppo di chiavi. L'unione è la stessa che fa loadConfig:
|
||||
# il file dell'utente vince chiave per chiave, il resto arriva da DEFAULTS.
|
||||
model_files() { # model_files <chiave>...
|
||||
local pairs key value
|
||||
pairs="$(config_model_files "$@")"
|
||||
for key in "$@"; do
|
||||
value="$(printf '%s\n' "$pairs" | awk -F'\t' -v k="$key" '$1 == k { print $2; exit }')"
|
||||
if [ -z "$value" ]; then value="$(default_model_file "$key")"; fi
|
||||
if [ -n "$value" ]; then printf '%s\n' "$value"; fi
|
||||
done | sort -u
|
||||
}
|
||||
|
||||
required_model_files() { model_files $MODEL_KEYS_REQUIRED; }
|
||||
|
||||
# I facoltativi già coperti dai necessari (per impostazione predefinita draft e
|
||||
# final sono lo stesso file) non vanno riproposti come «mancanti».
|
||||
optional_model_files() {
|
||||
local required
|
||||
required="$(required_model_files)"
|
||||
# grep -F con più righe = un motivo per riga: scarta i doppioni dei necessari.
|
||||
model_files $MODEL_KEYS_OPTIONAL | grep -vxF "$required" || true
|
||||
}
|
||||
|
||||
# Avviso, mai errore: senza questi si genera lo stesso, si perdono solo lo stile
|
||||
# alternativo, le modifiche (img2img) e l'ingrandimento.
|
||||
report_optional_models() {
|
||||
local m missing="" have_any=0
|
||||
for m in $(optional_model_files); do
|
||||
if [ -f "$MODELS_PATH/$m" ]; then
|
||||
have_any=1
|
||||
else
|
||||
missing="$missing $m"
|
||||
fi
|
||||
done
|
||||
missing="${missing# }"
|
||||
|
||||
if [ -z "$missing" ]; then
|
||||
if [ "$have_any" = "1" ]; then
|
||||
ok "Anche i modelli facoltativi sono presenti."
|
||||
record ok "Modelli extra" "presenti"
|
||||
fi
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Ripiego: i nomi in DEFAULTS.models dentro config.ts, per non duplicare qui l'elenco.
|
||||
grep -oE '"[A-Za-z0-9_.-]+\.ckpt"' "$REPO_DIR/extensions/imgen/config.ts" 2>/dev/null \
|
||||
| tr -d '"' | sort -u
|
||||
info "Facoltativi non presenti (nessun problema): $missing"
|
||||
hint "Servono solo per lo stile alternativo, le modifiche e l'ingrandimento."
|
||||
hint "Puoi aggiungerli quando ti servono, dall'app Draw Things o dal catalogo."
|
||||
record warn "Modelli extra" "facoltativi assenti: $missing"
|
||||
}
|
||||
|
||||
prefetch_models() {
|
||||
@@ -669,7 +723,7 @@ prefetch_models() {
|
||||
fi
|
||||
|
||||
local wanted present=0
|
||||
wanted="$(model_files | sort -u)"
|
||||
wanted="$(required_model_files)"
|
||||
if [ -z "$wanted" ]; then
|
||||
warn "Non riesco a determinare quali modelli servono."
|
||||
record warn "Modelli" "elenco non determinato"
|
||||
@@ -688,8 +742,9 @@ prefetch_models() {
|
||||
missing="${missing# }"
|
||||
|
||||
if [ -z "$missing" ]; then
|
||||
ok "Tutti i modelli sono già in $MODELS_PATH."
|
||||
ok "I modelli necessari sono già in $MODELS_PATH."
|
||||
record ok "Modelli" "$present presenti"
|
||||
report_optional_models
|
||||
return 0
|
||||
fi
|
||||
|
||||
@@ -699,6 +754,7 @@ prefetch_models() {
|
||||
warn "draw-things-cli non è installato: non posso prescaricare nulla."
|
||||
document_model_download
|
||||
record fail "Modelli" "mancanti: $missing"
|
||||
report_optional_models
|
||||
return 0
|
||||
fi
|
||||
|
||||
@@ -734,6 +790,7 @@ prefetch_models() {
|
||||
document_model_download
|
||||
record fail "Modelli" "mancanti: $still"
|
||||
fi
|
||||
report_optional_models
|
||||
return 0
|
||||
fi
|
||||
|
||||
@@ -742,6 +799,7 @@ prefetch_models() {
|
||||
info "Non tiro a indovinare i parametri: qui sotto trovi le vie sicure."
|
||||
document_model_download
|
||||
record fail "Modelli" "mancanti: $missing"
|
||||
report_optional_models
|
||||
}
|
||||
|
||||
document_model_download() {
|
||||
@@ -932,14 +990,30 @@ doctor() {
|
||||
err "Cartella di destinazione non utilizzabile: $OUT_DIR"
|
||||
fi
|
||||
|
||||
# Necessari (draft, final) e facoltativi (alt, edit, upscale) contati a parte:
|
||||
# i secondi non rendono l'installazione incompleta.
|
||||
local m found=0 lost=0
|
||||
for m in $(model_files | sort -u); do
|
||||
for m in $(required_model_files); do
|
||||
if [ -f "$MODELS_PATH/$m" ]; then found=$((found + 1)); else lost=$((lost + 1)); fi
|
||||
done
|
||||
if [ "$lost" = "0" ] && [ "$found" -gt 0 ]; then
|
||||
ok "Modelli: $found presenti."
|
||||
ok "Modelli necessari: $found presenti."
|
||||
else
|
||||
warn "Modelli: $found presenti, $lost mancanti."
|
||||
warn "Modelli necessari: $found presenti, $lost mancanti."
|
||||
fi
|
||||
|
||||
local extra_found=0 extra_lost=0
|
||||
for m in $(optional_model_files); do
|
||||
if [ -f "$MODELS_PATH/$m" ]; then
|
||||
extra_found=$((extra_found + 1))
|
||||
else
|
||||
extra_lost=$((extra_lost + 1))
|
||||
fi
|
||||
done
|
||||
if [ "$extra_lost" = "0" ]; then
|
||||
if [ "$extra_found" -gt 0 ]; then ok "Modelli facoltativi: $extra_found presenti."; fi
|
||||
else
|
||||
info "Modelli facoltativi: $extra_found presenti, $extra_lost non scaricati (va bene così)."
|
||||
fi
|
||||
|
||||
# -- caratteri -------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user