1
0
mirror of https://github.com/mrusme/neonmodem.git synced 2024-11-03 04:27:16 -05:00
neonmodem/ui/cmd/cmd.go

69 lines
955 B
Go
Raw Normal View History

2023-01-02 13:23:38 -05:00
package cmd
import tea "github.com/charmbracelet/bubbletea"
type CallType int8
const (
WinOpen CallType = iota
WinFocus
WinBlur
2023-01-02 14:24:07 -05:00
WinRefreshData
2023-01-02 13:23:38 -05:00
ViewFocus
ViewBlur
ViewRefreshData
)
type Arg struct {
Name string
Value interface{}
}
type Command struct {
Call CallType
Target string
Args map[string]interface{}
}
func New(
call CallType,
target string,
args ...Arg,
) *Command {
cmd := new(Command)
cmd.Call = call
cmd.Target = target
cmd.Args = make(map[string]interface{})
for _, arg := range args {
cmd.Args[arg.Name] = arg.Value
}
return cmd
}
func (cmd *Command) Tea() tea.Cmd {
return func() tea.Msg {
return *cmd
}
}
func (cmd *Command) GetArg(name string) interface{} {
if iface, ok := cmd.Args[name]; ok {
return iface
}
return nil
}
2023-01-02 14:24:07 -05:00
func (cmd *Command) GetArgs() []Arg {
var args []Arg
for name, value := range cmd.Args {
args = append(args, Arg{Name: name, Value: value})
}
return args
}