feat(spin): stdout streaming (#467)

This commit is contained in:
Maas Lalani 2023-12-21 15:09:00 -05:00 committed by GitHub
parent 4a00db207a
commit 6a275b423f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -15,12 +15,14 @@
package spin
import (
"os"
"os/exec"
"strings"
"time"
"github.com/charmbracelet/gum/internal/exit"
"github.com/charmbracelet/gum/timeout"
"github.com/mattn/go-isatty"
"github.com/charmbracelet/bubbles/spinner"
tea "github.com/charmbracelet/bubbletea"
@ -56,8 +58,12 @@ func commandStart(command []string) tea.Cmd {
}
cmd := exec.Command(command[0], args...) //nolint:gosec
cmd.Stdout = &outbuf
cmd.Stderr = &errbuf
if isatty.IsTerminal(os.Stdout.Fd()) {
cmd.Stdout = &outbuf
cmd.Stderr = &errbuf
} else {
cmd.Stdout = os.Stdout
}
_ = cmd.Run()
@ -82,8 +88,8 @@ func (m model) Init() tea.Cmd {
)
}
func (m model) View() string {
if m.quitting {
return ""
if m.quitting && m.showOutput {
return strings.TrimPrefix(errbuf.String()+"\n"+outbuf.String(), "\n")
}
var str string