mirror of
https://github.com/jesseduffield/lazydocker.git
synced 2026-07-22 07:11:01 +00:00
more progress
This commit is contained in:
parent
6bbd22bb8d
commit
1585b30904
5 changed files with 71 additions and 24 deletions
|
|
@ -113,13 +113,7 @@ func (gui *Gui) createPopupPanel(g *gocui.Gui, currentView *gocui.View, title, p
|
|||
// delete the existing confirmation panel if it exists
|
||||
if view, _ := g.View("confirmation"); view != nil {
|
||||
if err := gui.closeConfirmationPrompt(g); err != nil {
|
||||
errMessage := gui.Tr.TemplateLocalize(
|
||||
"CantCloseConfirmationPrompt",
|
||||
Teml{
|
||||
"error": err.Error(),
|
||||
},
|
||||
)
|
||||
gui.Log.Error(errMessage)
|
||||
gui.Log.Error(err.Error())
|
||||
}
|
||||
}
|
||||
confirmationView, err := gui.prepareConfirmationPanel(currentView, title, prompt, hasLoader)
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
package gui
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os/exec"
|
||||
"time"
|
||||
|
||||
"github.com/go-errors/errors"
|
||||
"github.com/jesseduffield/gocui"
|
||||
"github.com/jesseduffield/lazydocker/pkg/commands"
|
||||
"github.com/jesseduffield/lazydocker/pkg/utils"
|
||||
|
|
@ -12,6 +14,10 @@ import (
|
|||
|
||||
// list panel functions
|
||||
|
||||
func (gui *Gui) getContainerContexts() []string {
|
||||
return []string{"logs", "config"}
|
||||
}
|
||||
|
||||
func (gui *Gui) getSelectedContainer(g *gocui.Gui) (*commands.Container, error) {
|
||||
selectedLine := gui.State.Panels.Containers.SelectedLine
|
||||
if selectedLine == -1 {
|
||||
|
|
@ -62,11 +68,6 @@ func (gui *Gui) handleContainerSelect(g *gocui.Gui, v *gocui.View, alreadySelect
|
|||
return err
|
||||
}
|
||||
|
||||
// data, err := json.MarshalIndent(&container.Container, "", " ")
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
|
||||
mainView := gui.getMainView()
|
||||
|
||||
gui.State.MainWriterID++
|
||||
|
|
@ -76,16 +77,38 @@ func (gui *Gui) handleContainerSelect(g *gocui.Gui, v *gocui.View, alreadySelect
|
|||
mainView.SetOrigin(0, 0)
|
||||
mainView.SetCursor(0, 0)
|
||||
|
||||
if err := gui.renderLogs(mainView, container, writerID); err != nil {
|
||||
return err
|
||||
switch gui.getContainerContexts()[gui.State.Panels.Containers.ContextIndex] {
|
||||
case "logs":
|
||||
if err := gui.renderLogs(mainView, container, writerID); err != nil {
|
||||
return err
|
||||
}
|
||||
case "config":
|
||||
if err := gui.renderConfig(mainView, container, writerID); err != nil {
|
||||
return err
|
||||
}
|
||||
default:
|
||||
return errors.New("Unknown context for containers panel")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (gui *Gui) renderLogs(mainView *gocui.View, container *commands.Container, writerID int) error {
|
||||
func (gui *Gui) renderConfig(mainView *gocui.View, container *commands.Container, writerID int) error {
|
||||
mainView.Autoscroll = false
|
||||
mainView.Title = "Config"
|
||||
|
||||
data, err := json.MarshalIndent(&container.Container, "", " ")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
gui.renderString(gui.g, "main", string(data))
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (gui *Gui) renderLogs(mainView *gocui.View, container *commands.Container, writerID int) error {
|
||||
mainView.Autoscroll = true
|
||||
mainView.Title = "Logs"
|
||||
|
||||
var cmd *exec.Cmd
|
||||
cmd = gui.OSCommand.RunCustomCommand("docker logs --since=60m --timestamps --follow " + container.ID)
|
||||
|
|
@ -179,3 +202,29 @@ func (gui *Gui) handleContainersPrevLine(g *gocui.Gui, v *gocui.View) error {
|
|||
func (gui *Gui) handleContainerPress(g *gocui.Gui, v *gocui.View) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (gui *Gui) handleContainersPrevContext(g *gocui.Gui, v *gocui.View) error {
|
||||
contexts := gui.getContainerContexts()
|
||||
if gui.State.Panels.Containers.ContextIndex >= len(contexts)-1 {
|
||||
gui.State.Panels.Containers.ContextIndex = 0
|
||||
} else {
|
||||
gui.State.Panels.Containers.ContextIndex++
|
||||
}
|
||||
|
||||
gui.handleContainerSelect(gui.g, v, true)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (gui *Gui) handleContainersNextContext(g *gocui.Gui, v *gocui.View) error {
|
||||
contexts := gui.getContainerContexts()
|
||||
if gui.State.Panels.Containers.ContextIndex <= 0 {
|
||||
gui.State.Panels.Containers.ContextIndex = len(contexts) - 1
|
||||
} else {
|
||||
gui.State.Panels.Containers.ContextIndex--
|
||||
}
|
||||
|
||||
gui.handleContainerSelect(gui.g, v, true)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ type Gui struct {
|
|||
|
||||
type containerPanelState struct {
|
||||
SelectedLine int
|
||||
ContextIndex int // for specifying if you are looking at logs/stats/config/etc
|
||||
}
|
||||
|
||||
type menuPanelState struct {
|
||||
|
|
@ -105,7 +106,7 @@ func NewGui(log *logrus.Entry, dockerCommand *commands.DockerCommand, oSCommand
|
|||
PreviousView: "containers",
|
||||
Platform: *oSCommand.Platform,
|
||||
Panels: &panelStates{
|
||||
Containers: &containerPanelState{SelectedLine: -1},
|
||||
Containers: &containerPanelState{SelectedLine: -1, ContextIndex: 0},
|
||||
Menu: &menuPanelState{SelectedLine: 0},
|
||||
},
|
||||
MainWriterID: 0,
|
||||
|
|
@ -290,7 +291,6 @@ func (gui *Gui) layout(g *gocui.Gui) error {
|
|||
if err.Error() != "unknown view" {
|
||||
return err
|
||||
}
|
||||
v.Title = gui.Tr.SLocalize("DiffTitle")
|
||||
v.Wrap = true
|
||||
v.FgColor = gocui.ColorWhite
|
||||
}
|
||||
|
|
|
|||
|
|
@ -138,6 +138,16 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
|
|||
Key: gocui.MouseLeft,
|
||||
Modifier: gocui.ModNone,
|
||||
Handler: gui.handleDonate,
|
||||
}, {
|
||||
ViewName: "containers",
|
||||
Key: '[',
|
||||
Modifier: gocui.ModNone,
|
||||
Handler: gui.handleContainersPrevContext,
|
||||
}, {
|
||||
ViewName: "containers",
|
||||
Key: ']',
|
||||
Modifier: gocui.ModNone,
|
||||
Handler: gui.handleContainersNextContext,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -107,13 +107,7 @@ func (gui *Gui) switchFocus(g *gocui.Gui, oldView, newView *gocui.View) error {
|
|||
}
|
||||
|
||||
gui.Log.Info("setting highlight to true for view" + newView.Name())
|
||||
message := gui.Tr.TemplateLocalize(
|
||||
"newFocusedViewIs",
|
||||
Teml{
|
||||
"newFocusedView": newView.Name(),
|
||||
},
|
||||
)
|
||||
gui.Log.Info(message)
|
||||
gui.Log.Info("new focused view is " + newView.Name())
|
||||
if _, err := g.SetCurrentView(newView.Name()); err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue