mirror of
https://github.com/miniflux/v2.git
synced 2025-09-30 19:22:11 +00:00
This PR refactors the configuration parser, replacing the old parser implementation with a new, more structured approach that includes validation and improved organization. Key changes: - Complete rewrite of the configuration parser using a map-based structure with built-in validation - Addition of comprehensive validator functions for configuration values - Renamed numerous configuration getter methods for better consistency
60 lines
1.5 KiB
Go
60 lines
1.5 KiB
Go
// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package config // import "miniflux.app/v2/internal/config"
|
|
|
|
import (
|
|
"fmt"
|
|
"slices"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
func validateChoices(rawValue string, choices []string) error {
|
|
if !slices.Contains(choices, rawValue) {
|
|
return fmt.Errorf("value must be one of: %v", strings.Join(choices, ", "))
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func validateListChoices(inputValues, choices []string) error {
|
|
for _, value := range inputValues {
|
|
if !slices.Contains(choices, value) {
|
|
return fmt.Errorf("value must be one of: %v", strings.Join(choices, ", "))
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func validateGreaterThan(rawValue string, min int) error {
|
|
intValue, err := strconv.Atoi(rawValue)
|
|
if err != nil {
|
|
return fmt.Errorf("value must be an integer")
|
|
}
|
|
if intValue > min {
|
|
return nil
|
|
}
|
|
return fmt.Errorf("value must be at least %d", min)
|
|
}
|
|
|
|
func validateGreaterOrEqualThan(rawValue string, min int) error {
|
|
intValue, err := strconv.Atoi(rawValue)
|
|
if err != nil {
|
|
return fmt.Errorf("value must be an integer")
|
|
}
|
|
if intValue >= min {
|
|
return nil
|
|
}
|
|
return fmt.Errorf("value must be greater or equal than %d", min)
|
|
}
|
|
|
|
func validateRange(rawValue string, min, max int) error {
|
|
intValue, err := strconv.Atoi(rawValue)
|
|
if err != nil {
|
|
return fmt.Errorf("value must be an integer")
|
|
}
|
|
if intValue < min || intValue > max {
|
|
return fmt.Errorf("value must be between %d and %d", min, max)
|
|
}
|
|
return nil
|
|
}
|