mirror of
https://github.com/jesseduffield/lazydocker.git
synced 2026-07-25 08:31:03 +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"
|
mainView.Title = "Logs"
|
||||||
|
|
||||||
if container.Details.Config.AttachStdin {
|
if container.Details.Config.AttachStdin {
|
||||||
logs, err := gui.OSCommand.RunCommandWithOutput("docker logs --since=60m " + container.ID)
|
return gui.renderLogsForTTYContainer(mainView, container, writerID)
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return gui.renderString(gui.g, "main", logs)
|
|
||||||
}
|
}
|
||||||
|
return gui.renderLogsForRegularContainer(mainView, container, writerID)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (gui *Gui) renderLogsForRegularContainer(mainView *gocui.View, container *commands.Container, writerID int) error {
|
||||||
var cmd *exec.Cmd
|
var cmd *exec.Cmd
|
||||||
cmd = gui.OSCommand.RunCustomCommand("docker logs --since=60m --timestamps --follow " + container.ID)
|
cmd = gui.OSCommand.RunCustomCommand("docker logs --since=60m --timestamps --follow " + container.ID)
|
||||||
|
|
||||||
cmd.Stdout = mainView
|
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() {
|
go func() {
|
||||||
gui.State.MainProcessChan <- struct{}{}
|
<-gui.State.MainProcessChan
|
||||||
gui.State.MainProcessMutex.Lock()
|
cmd.Process.Kill()
|
||||||
cmd.Start()
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
<-gui.State.MainProcessChan
|
|
||||||
cmd.Process.Kill()
|
|
||||||
}()
|
|
||||||
|
|
||||||
cmd.Wait()
|
|
||||||
gui.State.MainProcessMutex.Unlock()
|
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue