48 lines
700 B
Go
48 lines
700 B
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"io"
|
|
"os/exec"
|
|
|
|
tea "github.com/charmbracelet/bubbletea"
|
|
)
|
|
|
|
type cmdMsg string
|
|
|
|
type cmdDoneMsg struct{}
|
|
|
|
func installPackage(sub chan string) tea.Cmd {
|
|
return func() tea.Msg {
|
|
cmd := exec.Command("./test.sh")
|
|
out, err := cmd.StdoutPipe()
|
|
if err != nil {
|
|
return errMsg{err}
|
|
}
|
|
|
|
if err := cmd.Start(); err != nil {
|
|
return errMsg{err}
|
|
}
|
|
|
|
buf := bufio.NewReader(out)
|
|
for {
|
|
line, _, err := buf.ReadLine()
|
|
|
|
if err == io.EOF {
|
|
return cmdDoneMsg{}
|
|
}
|
|
|
|
if err != nil {
|
|
return errMsg{err}
|
|
}
|
|
|
|
sub <- string(line)
|
|
}
|
|
}
|
|
}
|
|
|
|
func waitForCmdResponses(sub chan string) tea.Cmd {
|
|
return func() tea.Msg {
|
|
return cmdMsg(<-sub)
|
|
}
|
|
}
|