lnd/lncfg/interface.go
Conner Fromknecht 5c8ba59790
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.
2019-04-01 16:33:50 -07:00

22 lines
557 B
Go

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
}