package api import ( "fmt" "os/exec" "path/filepath" "strings" ) // resolveBlenderBinaryPath resolves a Blender executable to an absolute path. func resolveBlenderBinaryPath(blenderBinary string) (string, error) { if blenderBinary == "" { return "", fmt.Errorf("blender binary path is empty") } // Already contains a path component; normalize it. if strings.Contains(blenderBinary, string(filepath.Separator)) { absPath, err := filepath.Abs(blenderBinary) if err != nil { return "", fmt.Errorf("failed to resolve blender binary path %q: %w", blenderBinary, err) } return absPath, nil } // Bare executable name, resolve via PATH. resolvedPath, err := exec.LookPath(blenderBinary) if err != nil { return "", fmt.Errorf("failed to locate blender binary %q in PATH: %w", blenderBinary, err) } absPath, err := filepath.Abs(resolvedPath) if err != nil { return "", fmt.Errorf("failed to resolve blender binary path %q: %w", resolvedPath, err) } return absPath, nil }