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)
|
manager := gui.getManager(view)
|
||||||
|
|
||||||
|
var r io.ReadCloser
|
||||||
start := func() (*exec.Cmd, io.Reader) {
|
start := func() (*exec.Cmd, io.Reader) {
|
||||||
r, err := cmd.StdoutPipe()
|
var err error
|
||||||
|
r, err = cmd.StdoutPipe()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
gui.c.Log.Error(err)
|
gui.c.Log.Error(err)
|
||||||
|
r = nil
|
||||||
}
|
}
|
||||||
cmd.Stderr = cmd.Stdout
|
cmd.Stderr = cmd.Stdout
|
||||||
|
|
||||||
@ -32,8 +35,15 @@ func (gui *Gui) newCmdTask(view *gocui.View, cmd *exec.Cmd, prefix string) error
|
|||||||
return cmd, r
|
return cmd, r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onClose := func() {
|
||||||
|
if r != nil {
|
||||||
|
r.Close()
|
||||||
|
r = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
linesToRead := gui.linesToReadFromCmdTask(view)
|
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)
|
gui.c.Log.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user