...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package ntpmonitor
16
17 import (
18
19
20 _ "embed"
21 "fmt"
22 "os"
23
24 "gopkg.in/yaml.v3"
25 )
26
27
28 var defaultConfigData []byte
29
30
31 type Config struct {
32 RequestAttempts int `yaml:"request_attempts"`
33 RequestTimeout int `yaml:"request_timeout"`
34 NumServers int `yaml:"num_servers"`
35 MaxTimeDelta int `yaml:"max_time_delta"`
36 ServerThreshold int `yaml:"server_threshold"`
37 Period int `yaml:"period"`
38 Servers []string `yaml:"servers"`
39 }
40
41
42
43
44 func LoadConfig(path string) (*Config, error) {
45 var configData []byte
46 if path == "" {
47 configData = defaultConfigData
48 } else {
49 data, err := os.ReadFile(path)
50 if err != nil {
51 return nil, fmt.Errorf("failed to read file: %s %w",
52 path, err)
53 }
54 configData = data
55 }
56
57 var cfg Config
58 if err := yaml.Unmarshal(configData, &cfg); err != nil {
59 return nil, fmt.Errorf("failed to parse YAML: %w", err)
60 }
61
62 return &cfg, nil
63 }
64
View as plain text