lncfg/interface: define Validator iface + variadic Validate
This commit introduces the Validator interface, which is intended to be implemented by any sub configs. It specifies a Validate() error method that should fail if a sub configuration contains any invalid or insane parameters. In addition, a package-level Validate method can be used to check a variadic number of sub configs implementing the Validator interface. This allows the primary config struct to be extended via targeted and/or specialized sub configs, and validate all of them in sequence without bloating the main package with the actual validation logic.
This commit is contained in:
parent
6d3e081f7b
commit
5c8ba59790
21
lncfg/interface.go
Normal file
21
lncfg/interface.go
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package lncfg
|
||||||
|
|
||||||
|
// Validator is a generic interface for validating sub configurations.
|
||||||
|
type Validator interface {
|
||||||
|
// Validate returns an error if a particular configuration is invalid or
|
||||||
|
// insane.
|
||||||
|
Validate() error
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate accepts a variadic list of Validators and checks that each one
|
||||||
|
// passes its Validate method. An error is returned from the first Validator
|
||||||
|
// that fails.
|
||||||
|
func Validate(validators ...Validator) error {
|
||||||
|
for _, validator := range validators {
|
||||||
|
if err := validator.Validate(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
@ -47,3 +47,6 @@ func (w *Workers) Validate() error {
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Compile-time constraint to ensure Workers implements the Validator interface.
|
||||||
|
var _ Validator = (*Workers)(nil)
|
||||||
|
Loading…
Reference in New Issue
Block a user