MCPcopy Create free account
hub / github.com/dim-an/cod / handleListCommands

Method handleListCommands

server/server.go:397–446  ·  view source on GitHub ↗
(req *ListCommandsRequest, _ *util.Warner)

Source from the content-addressed store, hash-verified

395var numberRe = regexp.MustCompile("^\\d+$")
396
397func (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
448func (s *serverImpl) handleRemoveCommands(req *RemoveCommandsRequest, _ *util.Warner) (rsp RemoveCommandsResponse, err error) {
449 s.mutex.Lock()

Callers 1

handleRequestMethod · 0.95

Calls 4

MatchStringMethod · 0.95
CompileSelectorFunction · 0.92
GetHomeDirMethod · 0.80
ListCommandsMethod · 0.65

Tested by

no test coverage detected