-
Notifications
You must be signed in to change notification settings - Fork 0
/
config_type.go
36 lines (30 loc) · 1.18 KB
/
config_type.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package configurator
import "github.com/matthewhartstonge/configurator/diag"
var _ ConfigImplementer = (*ConfigType)(nil)
// ConfigType provides an abstract struct (née abstract base class) to compose
// into concrete config parser implementations.
type ConfigType struct {
// Config provides
Config ConfigImplementer
}
// Values implements ConfigParser for returning the underlying parsed values.
func (c *ConfigType) Values() any {
if c.Config == nil {
return nil
}
return c.Config
}
// Validate expects the implementor to return any errors found in the parsed
// configuration. If any errors are found it aims to provide clear user
// instruction as to where errors were encountered and how one would go about
// fixing it.
// A component is provided so that file configurators can pass through if it is
// global or local configuration.
func (c *ConfigType) Validate(component diag.Component) diag.Diagnostics {
return c.Config.Validate(component)
}
// Merge expects the implementor to merge the parsed configuration from the
// concrete implementation and bind it back into the provided domain config.
func (c *ConfigType) Merge(domainConfig any) any {
return c.Config.Merge(domainConfig)
}