app

package
v0.10.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 30, 2021 License: Apache-2.0 Imports: 23 Imported by: 0

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]),
		}),
	}

	Navigation = &guilib.View{
		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
	Navigation  *guilib.View
	Detail      *guilib.View
	Option      *guilib.View
	Gui         *guilib.Gui
	// contains filtered or unexported fields
}

App lazykube application

func NewApp

func NewApp() *App

NewApp new lazykube application

func (*App) CheckRelease added in v0.8.0

func (app *App) CheckRelease() (bool, string, error)

func (*App) OnRender

func (app *App) OnRender(gui *guilib.Gui) error

OnRender OnRender

func (*App) OnRenderOptions

func (app *App) OnRenderOptions(gui *guilib.Gui) error

OnRenderOptions OnRenderOptions

func (*App) Run

func (app *App) Run()

Run run

func (*App) Stop

func (app *App) Stop()

Stop stop

func (*App) Version added in v0.8.0

func (app *App) Version() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL