...
1 package hcl
2
3 import (
4 "bytes"
5 "encoding/json"
6
7 "github.com/hashicorp/hcl"
8 "github.com/hashicorp/hcl/hcl/printer"
9 )
10
11
12
13 type Codec struct{}
14
15 func (Codec) Encode(v map[string]any) ([]byte, error) {
16 b, err := json.Marshal(v)
17 if err != nil {
18 return nil, err
19 }
20
21
22
23 ast, err := hcl.Parse(string(b))
24 if err != nil {
25 return nil, err
26 }
27
28 var buf bytes.Buffer
29
30 err = printer.Fprint(&buf, ast.Node)
31 if err != nil {
32 return nil, err
33 }
34
35 return buf.Bytes(), nil
36 }
37
38 func (Codec) Decode(b []byte, v map[string]any) error {
39 return hcl.Unmarshal(b, &v)
40 }
41
View as plain text