(kind configSetValueKind, raw string)
| 1753 | } |
| 1754 | |
| 1755 | func parseConfigSetValue(kind configSetValueKind, raw string) (any, error) { |
| 1756 | trimmed := strings.TrimSpace(raw) |
| 1757 | switch kind { |
| 1758 | case configSetString: |
| 1759 | return raw, nil |
| 1760 | case configSetBool: |
| 1761 | value, err := strconv.ParseBool(trimmed) |
| 1762 | if err != nil { |
| 1763 | return nil, fmt.Errorf("cli: parse bool value %q: %w", raw, err) |
| 1764 | } |
| 1765 | return value, nil |
| 1766 | case configSetInt: |
| 1767 | value, err := strconv.Atoi(trimmed) |
| 1768 | if err != nil { |
| 1769 | return nil, fmt.Errorf("cli: parse integer value %q: %w", raw, err) |
| 1770 | } |
| 1771 | return value, nil |
| 1772 | case configSetInt64: |
| 1773 | value, err := strconv.ParseInt(trimmed, 10, 64) |
| 1774 | if err != nil { |
| 1775 | return nil, fmt.Errorf("cli: parse integer value %q: %w", raw, err) |
| 1776 | } |
| 1777 | return value, nil |
| 1778 | case configSetFloat: |
| 1779 | value, err := strconv.ParseFloat(trimmed, 64) |
| 1780 | if err != nil { |
| 1781 | return nil, fmt.Errorf("cli: parse float value %q: %w", raw, err) |
| 1782 | } |
| 1783 | return value, nil |
| 1784 | case configSetDuration: |
| 1785 | if _, err := time.ParseDuration(trimmed); err != nil { |
| 1786 | return nil, fmt.Errorf("cli: parse duration value %q: %w", raw, err) |
| 1787 | } |
| 1788 | return trimmed, nil |
| 1789 | case configSetStringSlice: |
| 1790 | return parseStringSliceValue(trimmed) |
| 1791 | default: |
| 1792 | return nil, fmt.Errorf("cli: unsupported config value kind %d", kind) |
| 1793 | } |
| 1794 | } |
| 1795 | |
| 1796 | func parseStringSliceValue(raw string) ([]string, error) { |
| 1797 | if strings.TrimSpace(raw) == "" { |
no test coverage detected