42c14fae59
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
42 lines
1.2 KiB
Markdown
42 lines
1.2 KiB
Markdown
---
|
|
id: 0077
|
|
title: fn run <bash_function> no propaga stdout/stderr al usuario
|
|
status: pending
|
|
priority: medium
|
|
created: 2026-05-10
|
|
related_components: [cmd/fn, fn run dispatcher]
|
|
---
|
|
|
|
## Sintoma
|
|
|
|
```bash
|
|
./fn run gradle_unit_test apps/counter_kt
|
|
```
|
|
|
|
Salida:
|
|
```
|
|
[fn run] gradle_unit_test_bash_infra (bash/function) apps/counter_kt
|
|
```
|
|
|
|
Y nada mas. El subprocess parece correr (gradle se invoca, build sucede), pero stdout y stderr del subproceso no llegan a la terminal del caller.
|
|
|
|
## Reproducir
|
|
|
|
Comparar:
|
|
```bash
|
|
./fn run gradle_unit_test apps/counter_kt # mudo
|
|
bash bash/functions/infra/gradle_unit_test.sh apps/counter_kt # imprime build log normal
|
|
```
|
|
|
|
## Hipotesis
|
|
|
|
`cmd/fn` dispatcher para bash usa `exec.Command(...).Run()` u `Output()` y descarta stdout/stderr en lugar de conectarlos al terminal del caller. O captura todo y lo imprime al final pero solo si exit 0.
|
|
|
|
## Fix propuesto
|
|
|
|
En el dispatcher de bash (`cmd/fn/run.go` o similar), conectar `cmd.Stdout = os.Stdout` y `cmd.Stderr = os.Stderr` para streaming en tiempo real. Ya se hace para Go/Python segun otros flujos del registry.
|
|
|
|
## Validacion
|
|
|
|
`./fn run gradle_unit_test apps/counter_kt` debe imprimir mismo output que `bash bash/functions/infra/gradle_unit_test.sh apps/counter_kt`.
|