MCPcopy Create free account
hub / github.com/Chat2AnyLLM/code-agent-manager / parseListFlag

Function parseListFlag

internal/cli/provider_cmd.go:528–557  ·  view source on GitHub ↗

parseListFlag interprets a value like "+a,b", "-x", "=a,b", or "a,b". When add is true (the flag is being parsed for `add`), the leading sigil is rejected because mutation operators only make sense on update.

(raw string, addMode bool)

Source from the content-addressed store, hash-verified

526// When add is true (the flag is being parsed for `add`), the leading sigil
527// is rejected because mutation operators only make sense on update.
528func parseListFlag(raw string, addMode bool) (providers.ListOp, []string, error) {
529 if raw == "" {
530 return providers.ListOpReplace, nil, nil
531 }
532 op := providers.ListOpReplace
533 body := raw
534 switch raw[0] {
535 case '+':
536 op = providers.ListOpAdd
537 body = raw[1:]
538 case '-':
539 op = providers.ListOpRemove
540 body = raw[1:]
541 case '=':
542 op = providers.ListOpReplace
543 body = raw[1:]
544 }
545 if addMode && op != providers.ListOpReplace {
546 return op, nil, errors.New("add does not accept +/- prefixes (use plain or '=' value)")
547 }
548 parts := strings.Split(body, ",")
549 out := make([]string, 0, len(parts))
550 for _, p := range parts {
551 trimmed := strings.TrimSpace(p)
552 if trimmed != "" {
553 out = append(out, trimmed)
554 }
555 }
556 return op, out, nil
557}
558
559func providersFileFromAPI(listed []appapi.Provider) providers.File {
560 file := providers.File{Common: map[string]any{}, Endpoints: map[string]providers.Endpoint{}}

Callers 2

providerAddFlagModeMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected