mirror of
https://github.com/mrusme/neonmodem.git
synced 2024-12-04 14:46:37 -05:00
Implemented cmd package
This commit is contained in:
parent
cb16c4cd60
commit
0847aee30e
57
ui/cmd/cmd.go
Normal file
57
ui/cmd/cmd.go
Normal file
@ -0,0 +1,57 @@
|
||||
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
|
||||
}
|
Loading…
Reference in New Issue
Block a user