package views import ( "context" "io" "os" "path/filepath" "github.com/derailed/k9s/internal/config" "github.com/derailed/popeye/pkg" cfg "github.com/derailed/popeye/pkg/config" "github.com/derailed/tview" "github.com/gdamore/tcell" "github.com/rs/zerolog/log" ) type popeyeView struct { *detailsView current igniter ansiWriter io.Writer } func newPopeyeView(app *appView) *popeyeView { v := popeyeView{} { v.detailsView = newDetailsView(app, v.backCmd) v.SetBorderPadding(0, 0, 1, 1) v.current = app.content.GetPrimitive("main").(igniter) v.SetDynamicColors(true) v.SetWrap(true) v.setTitle("Popeye") v.ansiWriter = tview.ANSIWriter(v) } v.actions[KeyP] = newKeyAction("Previous", v.app.prevCmd, false) return &v } func (v *popeyeView) init(ctx context.Context, ns string) { c := cfg.New() spinach := filepath.Join(config.K9sHome, "spinach.yml") if _, err := os.Stat(spinach); err == nil { c.Spinach = spinach } if v.app.config.K9s.CurrentContext != "" { v.app.flags.Context = &v.app.config.K9s.CurrentContext } if err := c.Init(v.app.flags); err != nil { log.Error().Err(err).Msg("Unable to load spinach config") } p := pkg.NewPopeye(c, v.ansiWriter) p.Sanitize() } func (v *popeyeView) getTitle() string { return "Popeye" } func (v *popeyeView) backCmd(evt *tcell.EventKey) *tcell.EventKey { v.app.command.previousCmd() v.app.inject(v.current) return nil }