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 } } return nil, nil } func (n *Wm) parse(msg *sock.Msg) (bool, error) { if !msg.HasNext() { return false, &copies.ErrMissingArguments{} } arg := msg.Next() switch arg { case "--desktop", "-d": case "--desktops", "-D": return n.readCommand(msg, "desktops") case "--monitor", "-m": case "--monitors", "-M": return n.readCommand(msg, "monitors") case "--names": n.UseNames = true case "--node", "-n": case "--nodes", "-N": return n.readCommand(msg, "nodes") case "--tree", "-T": return n.readCommand(msg, "tree") default: return false, fmt.Errorf(`unknown option: '%s'`, arg) } return msg.HasNext(), nil }