| 1794 | } |
| 1795 | |
| 1796 | func parseStringSliceValue(raw string) ([]string, error) { |
| 1797 | if strings.TrimSpace(raw) == "" { |
| 1798 | return []string{}, nil |
| 1799 | } |
| 1800 | if strings.HasPrefix(strings.TrimSpace(raw), "[") { |
| 1801 | var values []string |
| 1802 | if err := json.Unmarshal([]byte(raw), &values); err != nil { |
| 1803 | return nil, fmt.Errorf("cli: parse string array %q: %w", raw, err) |
| 1804 | } |
| 1805 | return values, nil |
| 1806 | } |
| 1807 | parts := strings.Split(raw, ",") |
| 1808 | values := make([]string, 0, len(parts)) |
| 1809 | for _, part := range parts { |
| 1810 | if trimmed := strings.TrimSpace(part); trimmed != "" { |
| 1811 | values = append(values, trimmed) |
| 1812 | } |
| 1813 | } |
| 1814 | return values, nil |
| 1815 | } |
| 1816 | |
| 1817 | func ensureEditableConfigFile(path string) error { |
| 1818 | file, err := os.OpenFile(path, os.O_CREATE|os.O_RDWR, 0o600) |