(req *ListCommandsRequest, _ *util.Warner)
| 395 | var numberRe = regexp.MustCompile("^\\d+$") |
| 396 | |
| 397 | func (s *serverImpl) handleListCommands(req *ListCommandsRequest, _ *util.Warner) (rsp ListCommandsResponse, err error) { |
| 398 | idFilter := make(map[int64]bool) |
| 399 | var globs []util.Selector |
| 400 | for _, selector := range req.Selectors { |
| 401 | switch { |
| 402 | case numberRe.MatchString(selector): |
| 403 | var pid int64 |
| 404 | pid, err = strconv.ParseInt(selector, 10, 64) |
| 405 | if err != nil { |
| 406 | return |
| 407 | } |
| 408 | idFilter[pid] = true |
| 409 | default: |
| 410 | var g util.Selector |
| 411 | g, err = util.CompileSelector(selector, s.configuration.GetHomeDir()) |
| 412 | if err != nil { |
| 413 | return |
| 414 | } |
| 415 | globs = append(globs, g) |
| 416 | } |
| 417 | } |
| 418 | |
| 419 | commands, err := s.storage.ListCommands() |
| 420 | if err != nil { |
| 421 | return |
| 422 | } |
| 423 | |
| 424 | for id, command := range commands { |
| 425 | take := false |
| 426 | if _, ok := idFilter[id]; ok { |
| 427 | take = true |
| 428 | } else if command != nil && len(command.Args) > 0 { |
| 429 | for _, g := range globs { |
| 430 | if g.MatchString(command.Args[0]) { |
| 431 | take = true |
| 432 | break |
| 433 | } |
| 434 | } |
| 435 | } |
| 436 | |
| 437 | if take { |
| 438 | item := ListCommandsResponseItem{ |
| 439 | Id: id, |
| 440 | Command: command, |
| 441 | } |
| 442 | rsp.CommandItems = append(rsp.CommandItems, item) |
| 443 | } |
| 444 | } |
| 445 | return |
| 446 | } |
| 447 | |
| 448 | func (s *serverImpl) handleRemoveCommands(req *RemoveCommandsRequest, _ *util.Warner) (rsp RemoveCommandsResponse, err error) { |
| 449 | s.mutex.Lock() |
no test coverage detected