mirror of
https://github.com/jesseduffield/lazydocker.git
synced 2026-07-22 15:11:02 +00:00
more progress
This commit is contained in:
parent
e5ccc673d9
commit
b2e60e1914
1 changed files with 40 additions and 16 deletions
|
|
@ -175,32 +175,56 @@ func (gui *Gui) renderContainerLogs(mainView *gocui.View, container *commands.Co
|
|||
mainView.Title = "Logs"
|
||||
|
||||
if container.Details.Config.AttachStdin {
|
||||
logs, err := gui.OSCommand.RunCommandWithOutput("docker logs --since=60m " + container.ID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return gui.renderString(gui.g, "main", logs)
|
||||
return gui.renderLogsForTTYContainer(mainView, container, writerID)
|
||||
}
|
||||
return gui.renderLogsForRegularContainer(mainView, container, writerID)
|
||||
}
|
||||
|
||||
func (gui *Gui) renderLogsForRegularContainer(mainView *gocui.View, container *commands.Container, writerID int) error {
|
||||
var cmd *exec.Cmd
|
||||
cmd = gui.OSCommand.RunCustomCommand("docker logs --since=60m --timestamps --follow " + container.ID)
|
||||
|
||||
cmd.Stdout = mainView
|
||||
|
||||
go gui.runProcessWithLock(cmd)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (gui *Gui) runProcessWithLock(cmd *exec.Cmd) {
|
||||
gui.State.MainProcessChan <- struct{}{}
|
||||
gui.State.MainProcessMutex.Lock()
|
||||
cmd.Start()
|
||||
|
||||
go func() {
|
||||
gui.State.MainProcessChan <- struct{}{}
|
||||
gui.State.MainProcessMutex.Lock()
|
||||
cmd.Start()
|
||||
|
||||
go func() {
|
||||
<-gui.State.MainProcessChan
|
||||
cmd.Process.Kill()
|
||||
}()
|
||||
|
||||
cmd.Wait()
|
||||
gui.State.MainProcessMutex.Unlock()
|
||||
<-gui.State.MainProcessChan
|
||||
cmd.Process.Kill()
|
||||
}()
|
||||
|
||||
cmd.Wait()
|
||||
gui.State.MainProcessMutex.Unlock()
|
||||
}
|
||||
|
||||
func (gui *Gui) renderLogsForTTYContainer(mainView *gocui.View, container *commands.Container, writerID int) error {
|
||||
var cmd *exec.Cmd
|
||||
cmd = gui.OSCommand.RunCustomCommand("docker logs --since=60m --follow " + container.ID)
|
||||
|
||||
r, err := cmd.StdoutPipe()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
go func() {
|
||||
for {
|
||||
s := bufio.NewScanner(r)
|
||||
s.Split(bufio.ScanLines)
|
||||
for s.Scan() {
|
||||
mainView.Write(append(s.Bytes(), '\n'))
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
go gui.runProcessWithLock(cmd)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue