k9s/internal/views/cmd_stack.go

47 lines
753 B
Go

package views
const maxStackSize = 10
type cmdStack struct {
index int
stack []string
}
func newCmdStack() *cmdStack {
return &cmdStack{stack: make([]string, 0, maxStackSize)}
}
func (s *cmdStack) push(cmd string) {
if len(s.stack) == maxStackSize {
s.stack = s.stack[1 : len(s.stack)-1]
}
s.stack = append(s.stack, cmd)
}
func (s *cmdStack) pop() (string, bool) {
if s.empty() {
return "", false
}
top := s.stack[len(s.stack)-1]
s.stack = s.stack[:len(s.stack)-1]
return top, true
}
func (s *cmdStack) top() (string, bool) {
if s.empty() {
return "", false
}
return s.stack[len(s.stack)-1], true
}
func (s *cmdStack) empty() bool {
return len(s.stack) == 0
}
func (s *cmdStack) last() bool {
return len(s.stack) == 1
}