-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathoption.go
More file actions
39 lines (32 loc) · 679 Bytes
/
Copy pathoption.go
File metadata and controls
39 lines (32 loc) · 679 Bytes
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
37
38
39
package tinyconf
type driverOption struct {
driver Driver
}
func (o driverOption) apply(config *Manager) {
if o.driver != nil {
config.drivers = append(config.drivers, o.driver)
}
}
func countDrivers(opts ...Option) uint8 {
var driversCount uint8 = 0
for _, opt := range opts {
if _, ok := opt.(driverOption); ok {
driversCount++
}
}
return driversCount
}
func WithDriver(driver Driver) Option {
return driverOption{driver: driver}
}
type loggerOption struct {
logger Logger
}
func (o loggerOption) apply(config *Manager) {
if o.logger != nil {
config.log = o.logger
}
}
func WithLogger(logger Logger) Option {
return loggerOption{logger: logger}
}