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) } }