package cmd import tea "github.com/charmbracelet/bubbletea" type CallType int8 const ( WinOpen CallType = iota WinFocus WinBlur 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 }