wm/src/handler/domains/wm.go
2023-06-15 10:57:08 -05:00

68 lines
1.2 KiB
Go

package domains
import (
"fmt"
"tuxpa.in/t/wm/src/copies"
"tuxpa.in/t/wm/src/sock"
)
type Wm struct {
UseNames bool
inject
cmd
}
func (n *Wm) Run(msg *sock.Msg) ([]byte, error) {
if !msg.HasNext() {
return nil, &copies.ErrMissingArguments{}
}
for {
ok, err := n.parse(msg)
if err != nil {
return nil, err
}
if !ok {
break
}
}
switch n.Command {
default:
return nil, &copies.ErrTODO{
Kind: "command",
Name: n.Command,
}
}
}
func (n *Wm) parse(msg *sock.Msg) (bool, error) {
if !msg.HasNext() {
return false, &copies.ErrMissingArguments{}
}
arg := msg.Next()
switch arg {
case "--add-monitor", "-a":
return n.readCommand(msg, "add-monitor")
case "--adopt-orphans", "-o":
return n.readCommand(msg, "adopt-orphans")
case "--dump-state", "-d":
return n.readCommand(msg, "dump-state")
case "--get-status", "-g":
return n.readCommand(msg, "get-status")
case "--load-state", "-l":
return n.readCommand(msg, "load-state")
case "--record-history", "-h":
return n.readCommand(msg, "record-history")
case "--reorder-monitors", "-O":
return n.readCommand(msg, "reorder-monitors")
case "--restart", "-r":
return n.readCommand(msg, "restart")
default:
return false, fmt.Errorf(`unknown option: '%s'`, arg)
}
}