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)
| 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. |
| 528 | func 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 | |
| 559 | func providersFileFromAPI(listed []appapi.Provider) providers.File { |
| 560 | file := providers.File{Common: map[string]any{}, Endpoints: map[string]providers.Endpoint{}} |
no outgoing calls
no test coverage detected