mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2024-12-26 00:28:16 +03:00
d4a4bda645
Squashed commit of the following: commit 72f25ffe73d6b8216b01e590fba66fb5f6944113 Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Wed Jun 28 21:29:04 2023 +0300 next: add conf writing, validation
27 lines
784 B
Go
27 lines
784 B
Go
package configmgr
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/AdguardTeam/golibs/timeutil"
|
|
"golang.org/x/exp/constraints"
|
|
)
|
|
|
|
// numberOrDuration is the constraint for integer types along with
|
|
// timeutil.Duration.
|
|
type numberOrDuration interface {
|
|
constraints.Integer | timeutil.Duration
|
|
}
|
|
|
|
// newMustBePositiveError returns an error about the value that must be positive
|
|
// but isn't. prop is the name of the property to mention in the error message.
|
|
//
|
|
// TODO(a.garipov): Consider moving such helpers to golibs and use in AdGuardDNS
|
|
// as well.
|
|
func newMustBePositiveError[T numberOrDuration](prop string, v T) (err error) {
|
|
if s, ok := any(v).(fmt.Stringer); ok {
|
|
return fmt.Errorf("%s must be positive, got %s", prop, s)
|
|
}
|
|
|
|
return fmt.Errorf("%s must be positive, got %d", prop, v)
|
|
}
|