mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-08-06 22:33:07 +02:00
Close a task's stdout pipe when we are done with it
This is similar to what we do when running tasks in a pty (we close the pty there), and it should cause the called command to terminate.
This commit is contained in:
@ -18,10 +18,13 @@ func (gui *Gui) newCmdTask(view *gocui.View, cmd *exec.Cmd, prefix string) error
|
||||
|
||||
manager := gui.getManager(view)
|
||||
|
||||
var r io.ReadCloser
|
||||
start := func() (*exec.Cmd, io.Reader) {
|
||||
r, err := cmd.StdoutPipe()
|
||||
var err error
|
||||
r, err = cmd.StdoutPipe()
|
||||
if err != nil {
|
||||
gui.c.Log.Error(err)
|
||||
r = nil
|
||||
}
|
||||
cmd.Stderr = cmd.Stdout
|
||||
|
||||
@ -32,8 +35,15 @@ func (gui *Gui) newCmdTask(view *gocui.View, cmd *exec.Cmd, prefix string) error
|
||||
return cmd, r
|
||||
}
|
||||
|
||||
onClose := func() {
|
||||
if r != nil {
|
||||
r.Close()
|
||||
r = nil
|
||||
}
|
||||
}
|
||||
|
||||
linesToRead := gui.linesToReadFromCmdTask(view)
|
||||
if err := manager.NewTask(manager.NewCmdTask(start, prefix, linesToRead, nil), cmdStr); err != nil {
|
||||
if err := manager.NewTask(manager.NewCmdTask(start, prefix, linesToRead, onClose), cmdStr); err != nil {
|
||||
gui.c.Log.Error(err)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user