68 lines
1.2 KiB
Go
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)
|
|
}
|
|
}
|