-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathextensions.go
More file actions
40 lines (32 loc) · 836 Bytes
/
extensions.go
File metadata and controls
40 lines (32 loc) · 836 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
40
package xlog
import (
"log/slog"
"slices"
"strings"
)
type Extension interface {
Name() string
Init()
}
var extensions = []Extension{}
func RegisterExtension(e Extension) {
extensions = append(extensions, e)
}
func initExtensions() {
if Config.DisabledExtensions == "all" {
slog.Info("extensions", "disabled", "all")
return
}
disabled := strings.Split(Config.DisabledExtensions, ",")
disabledNames := []string{} // because the user can input wrong extension name
enabledNames := []string{}
for i := range extensions {
if slices.Contains(disabled, extensions[i].Name()) {
disabledNames = append(disabledNames, extensions[i].Name())
continue
}
extensions[i].Init()
enabledNames = append(enabledNames, extensions[i].Name())
}
slog.Info("extensions", "enabled", enabledNames, "disabled", disabled)
}