Documentation ¶
Index ¶
Constants ¶
View Source
const (
ScrollingLogsStateKey = "scrollingLogs" // value type: boolean
)
Variables ¶
View Source
var ( ClusterInfo = &guilib.View{ Name: clusterInfoViewName, Title: "Cluster Info", Clickable: true, ZIndex: zIndexOfFunctionView(clusterInfoViewName), LowerRightPointXFunc: func(gui *guilib.Gui, view *guilib.View) int { return leftSideWidth(gui.MaxWidth()) }, LowerRightPointYFunc: reactiveHeight, OnRender: renderClusterInfo, Actions: guilib.ToActionInterfaceArr([]*guilib.Action{ toNavigation, nextFunctionView, changeContext, newMoreActions(moreActionsMap[clusterInfoViewName]), }), OnFocus: func(gui *guilib.Gui, view *guilib.View) error { gui.ReRenderViews(navigationViewName, detailViewName) return nil }, } Deployment = &guilib.View{ Name: deploymentViewName, Title: "Deployments", FgColor: gocui.ColorDefault, ZIndex: zIndexOfFunctionView(deploymentViewName), Clickable: true, Highlight: true, SelFgColor: gocui.ColorGreen, OnRender: resourceListRender, OnSelectedLineChange: viewSelectedLineChangeHandler, OnFocus: func(gui *guilib.Gui, view *guilib.View) error { if err := onFocusClearSelected(gui, view); err != nil { return err } return nil }, DimensionFunc: guilib.BeneathView( func(*guilib.Gui, *guilib.View) string { return serviceViewName }, reactiveHeight, migrateTopFunc, ), Actions: guilib.ToActionInterfaceArr([]*guilib.Action{ toNavigation, nextFunctionView, previousLine, nextLine, copySelectedLine, filterResource, editResourceAction, newConfirmDialogAction(deploymentViewName, rolloutRestartAction), newMoreActions(moreActionsMap[deploymentViewName]), }), } Name: navigationViewName, Title: "Navigation", Clickable: true, CanNotReturn: true, OnClick: navigationOnClick, FgColor: gocui.ColorGreen, DimensionFunc: func(gui *guilib.Gui, view *guilib.View) (int, int, int, int) { return leftSideWidth(gui.MaxWidth()) + 1, 0, gui.MaxWidth() - 1, 2 }, OnRender: navigationRender, Actions: guilib.ToActionInterfaceArr([]*guilib.Action{ { Name: navigationArrowLeft, Keys: keyMap[navigationArrowLeft], Handler: navigationArrowLeftHandler, Mod: gocui.ModNone, }, { Name: navigationArrowRight, Keys: keyMap[navigationArrowRight], Handler: navigationArrowRightHandler, Mod: gocui.ModNone, }, { Name: navigationDown, Keys: keyMap[navigationDown], Handler: func(gui *guilib.Gui, _ *guilib.View) error { if err := gui.FocusView(detailViewName, false); err != nil { return err } return nil }, Mod: gocui.ModNone, }, }), } Detail = &guilib.View{ Name: detailViewName, Wrap: true, Title: "", Clickable: true, OnRender: detailRender, Highlight: true, SelFgColor: gocui.ColorGreen, DimensionFunc: func(gui *guilib.Gui, view *guilib.View) (int, int, int, int) { return leftSideWidth(gui.MaxWidth()) + 1, 2, gui.MaxWidth() - 1, gui.MaxHeight() - 2 }, Actions: guilib.ToActionInterfaceArr([]*guilib.Action{ editResourceAction, copySelectedLine, { Keys: keyMap[detailToNavigation], Name: detailToNavigation, Handler: func(gui *guilib.Gui, view *guilib.View) error { return gui.FocusView(navigationViewName, false) }, Mod: gocui.ModNone, }, { Name: detailArrowUp, Keys: keyMap[detailArrowUp], Handler: func(gui *guilib.Gui, view *guilib.View) error { _, oy := view.Origin() if oy == 0 { err := gui.FocusView(navigationViewName, false) if err != nil { return err } } return scrollUpHandler(gui, view) }, Mod: gocui.ModNone, }, { Keys: keyMap[detailArrowDown], Name: detailArrowDown, Handler: scrollDownHandler, Mod: gocui.ModNone, }, changePodLogsContainerAction, tailLogsAction, scrollLogsAction, newMoreActions(moreActionsMap[detailViewName]), }), } Namespace = &guilib.View{ Name: namespaceViewName, Title: "Namespaces", ZIndex: zIndexOfFunctionView(deploymentViewName), Clickable: true, OnRender: namespaceRender, OnSelectedLineChange: func(gui *guilib.Gui, view *guilib.View, selectedLine string) error { if !kubecli.Cli.HasNamespacePermission(context.Background()) { return nil } formatted := formatResourceName(selectedLine, 0) if notResourceSelected(formatted) { formatted = "" } _, err := view.GetState(iniDefaultNamespaceKey) if err != nil { if errors.Is(err, guilib.StateKeyError) { ns := kubecli.Cli.Namespace() if err := view.SetState(iniDefaultNamespaceKey, ns, false); err != nil { return err } return nil } return err } if formatted == "" { switchNamespace(gui, "") return nil } switchNamespace(gui, formatSelectedNamespace(selectedLine)) return nil }, Highlight: true, SelFgColor: gocui.ColorGreen, OnFocus: func(gui *guilib.Gui, view *guilib.View) error { if err := onFocusClearSelected(gui, view); err != nil { return err } return nil }, FgColor: gocui.ColorDefault, DimensionFunc: guilib.BeneathView( aboveViewNameFunc, reactiveHeight, migrateTopFunc, ), Actions: guilib.ToActionInterfaceArr([]*guilib.Action{ toNavigation, nextFunctionView, previousLine, nextLine, copySelectedLine, filterResource, editResourceAction, newMoreActions(moreActionsMap[namespaceViewName]), }), } Option = &guilib.View{ Name: optionViewName, DimensionFunc: func(gui *guilib.Gui, view *guilib.View) (int, int, int, int) { maxWidth, maxHeight := gui.Size() return 0, maxHeight - 2, maxWidth, maxHeight }, AlwaysOnTop: true, NoFrame: true, FgColor: gocui.ColorBlue, } Pod = &guilib.View{ Name: podViewName, Title: "Pods", ZIndex: zIndexOfFunctionView(deploymentViewName), Clickable: true, OnRender: namespaceResourceListRender("pods"), OnSelectedLineChange: viewSelectedLineChangeHandler, Highlight: true, SelFgColor: gocui.ColorGreen, OnFocus: func(gui *guilib.Gui, view *guilib.View) error { if err := onFocusClearSelected(gui, view); err != nil { return err } return nil }, FgColor: gocui.ColorDefault, DimensionFunc: guilib.BeneathView( aboveViewNameFunc, reactiveHeight, migrateTopFunc, ), LowerRightPointXFunc: func(gui *guilib.Gui, view *guilib.View) int { if resizeableViews[len(resizeableViews)-1] == view.Name { return leftSideWidth(gui.MaxWidth()) } _, _, x1, _ := view.DimensionFunc(gui, view) return x1 }, LowerRightPointYFunc: func(gui *guilib.Gui, view *guilib.View) int { _, y0, _, y1 := view.DimensionFunc(gui, view) if resizeableViews[len(resizeableViews)-1] == view.Name { height := gui.MaxHeight() - 2 if height < y0+1 { return y0 + 1 } return height } return y1 }, Actions: guilib.ToActionInterfaceArr([]*guilib.Action{ toNavigation, nextFunctionView, previousLine, nextLine, copySelectedLine, filterResource, editResourceAction, containerExecCommandAction, runPodAction, newMoreActions(moreActionsMap[podViewName]), }), } Service = &guilib.View{ Name: serviceViewName, Title: "Services", ZIndex: zIndexOfFunctionView(deploymentViewName), Clickable: true, OnRender: resourceListRender, OnSelectedLineChange: viewSelectedLineChangeHandler, Highlight: true, SelFgColor: gocui.ColorGreen, OnFocus: func(gui *guilib.Gui, view *guilib.View) error { if err := onFocusClearSelected(gui, view); err != nil { return err } return nil }, DimensionFunc: guilib.BeneathView( aboveViewNameFunc, reactiveHeight, migrateTopFunc, ), Actions: guilib.ToActionInterfaceArr([]*guilib.Action{ toNavigation, nextFunctionView, previousLine, nextLine, copySelectedLine, filterResource, editResourceAction, newMoreActions(moreActionsMap[namespaceViewName]), }), } )
View Source
var (
Version = "No Version Provided"
)
Functions ¶
This section is empty.
Types ¶
type App ¶
type App struct { ClusterInfo *guilib.View Namespace *guilib.View Service *guilib.View Deployment *guilib.View Pod *guilib.View Detail *guilib.View Option *guilib.View Gui *guilib.Gui // contains filtered or unexported fields }
App lazykube application
func (*App) OnRenderOptions ¶
OnRenderOptions OnRenderOptions
Click to show internal directories.
Click to hide internal directories.