47fac22230
- .claude/CLAUDE.md - .claude/commands/subagentes.md - .claude/rules/INDEX.md - .mcp.json - bash/functions/cybersecurity/analyze_dns.md - bash/functions/cybersecurity/audit_http_headers.md - bash/functions/cybersecurity/audit_ssh_config.md - bash/functions/cybersecurity/check_firewall.md - bash/functions/cybersecurity/detect_suspicious_users.md - bash/functions/cybersecurity/encrypt_file.md - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
56 lines
2.0 KiB
Markdown
56 lines
2.0 KiB
Markdown
---
|
|
name: sdcli_resolve_binary
|
|
kind: function
|
|
lang: go
|
|
domain: ml
|
|
version: "1.0.0"
|
|
purity: impure
|
|
signature: "func SdcliResolveBinary(hint string) (SdcliBinary, error)"
|
|
description: "Localiza el binario sd / sd-cli de stable-diffusion.cpp. Busca en orden: hint explicito, LookPath('sd'), LookPath('sd-cli'). Detecta la version ejecutando --version con timeout 3s. Retorna SdcliBinary con path, version y fuente de resolucion."
|
|
tags: [ml, sdcli, stablediffusion, binary, subprocess, imagegen, pendiente-usar]
|
|
uses_functions: []
|
|
uses_types: []
|
|
returns: []
|
|
returns_optional: false
|
|
error_type: "error_go_core"
|
|
imports: ["context", "fmt", "os", "os/exec", "strings", "time"]
|
|
params:
|
|
- name: hint
|
|
desc: "Path explicito al binario sd. Si es string vacio se busca en PATH. Si no es vacio debe existir y ser ejecutable."
|
|
output: "SdcliBinary con Path absoluto, Version detectada (puede ser vacia si --version falla) y Source ('config' si viene de hint, 'path' si viene de LookPath)."
|
|
tested: true
|
|
tests:
|
|
- "missing binary returns error when PATH empty"
|
|
- "hint path resolves to config source"
|
|
test_file_path: "functions/ml/sdcli_test.go"
|
|
file_path: "functions/ml/sdcli_resolve_binary.go"
|
|
---
|
|
|
|
## Ejemplo
|
|
|
|
```go
|
|
// Buscar automaticamente en PATH
|
|
bin, err := SdcliResolveBinary("")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
fmt.Printf("sd found at %s (version: %s)\n", bin.Path, bin.Version)
|
|
|
|
// Hint explicito (ej. desde config de usuario)
|
|
bin, err = SdcliResolveBinary("/opt/stable-diffusion/sd")
|
|
```
|
|
|
|
## Notas
|
|
|
|
`SdcliBinary` es el token de resolucion que se pasa a `SdcliGenerate`. Separar
|
|
la resolucion de la ejecucion permite validar el binario al arrancar la app sin
|
|
lanzar una generacion.
|
|
|
|
La deteccion de version es best-effort: si `sd --version` no existe o falla,
|
|
`Version` queda vacia y no se propaga error. Algunos builds de stable-diffusion.cpp
|
|
no implementan `--version`; en ese caso `Version == ""` es el comportamiento
|
|
esperado.
|
|
|
|
`Source` distingue binarios configurados explicitamente (`"config"`) de los
|
|
encontrados en PATH (`"path"`), util para logging y diagnostico.
|