...
1 package utils
2
3 import (
4 "bytes"
5 "fmt"
6 "gopkg.in/yaml.v3"
7 )
8
9
10 func ReadYaml(filename string, target interface{}) error {
11 b, err := ReadFile(filename)
12 if err != nil {
13 return err
14 }
15
16 decoder := yaml.NewDecoder(bytes.NewReader(b))
17 decoder.KnownFields(true)
18 err = decoder.Decode(target)
19
20 if err != nil {
21 return err
22 }
23 return nil
24 }
25
26
27 func UnmarshalYaml(buf []byte, target interface{}) error {
28 decoder := yaml.NewDecoder(bytes.NewReader(buf))
29 decoder.KnownFields(true)
30 err := decoder.Decode(target)
31
32 if err != nil {
33 return err
34 }
35 return nil
36 }
37
38
39 func MarshalYaml(src interface{}) ([]byte, error) {
40 return yaml.Marshal(src)
41 }
42
43
44 func WriteYaml(filename string, data interface{}) error {
45 b, err := MarshalYaml(data)
46 if err != nil {
47 return fmt.Errorf("failed to marshal data for file \"%s\": %w\n", filename, err)
48 }
49 err = WriteFile(filename, b)
50 if err != nil {
51 return err
52 }
53 return nil
54 }
55
View as plain text