snapshot of https://github.com/sqlc-dev/sqlc.git (main, 2026-09-16; blobs > 131072B omitted)
Some checks failed
kotlin / test (push) Has been skipped
python / test (push) Has been skipped
typescript / test (push) Has been skipped
go / build darwin/amd64 (push) Has been cancelled
go / build linux/amd64 (push) Has been cancelled
go / build windows/amd64 (push) Has been cancelled
go / build darwin/arm64 (push) Has been cancelled
go / build linux/arm64 (push) Has been cancelled
go / build windows/arm64 (push) Has been cancelled
go / test (push) Has been cancelled
go / vuln_check (push) Has been cancelled
Some checks failed
kotlin / test (push) Has been skipped
python / test (push) Has been skipped
typescript / test (push) Has been skipped
go / build darwin/amd64 (push) Has been cancelled
go / build linux/amd64 (push) Has been cancelled
go / build windows/amd64 (push) Has been cancelled
go / build darwin/arm64 (push) Has been cancelled
go / build linux/arm64 (push) Has been cancelled
go / build windows/arm64 (push) Has been cancelled
go / test (push) Has been cancelled
go / vuln_check (push) Has been cancelled
This commit is contained in:
84
internal/config/convert/convert.go
Normal file
84
internal/config/convert/convert.go
Normal file
@@ -0,0 +1,84 @@
|
||||
package convert
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
func gen(n *yaml.Node) (any, error) {
|
||||
switch n.Kind {
|
||||
|
||||
case yaml.MappingNode:
|
||||
nn := map[string]any{}
|
||||
for i, _ := range n.Content {
|
||||
if i%2 == 0 {
|
||||
k := n.Content[i]
|
||||
v, err := gen(n.Content[i+1])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
nn[k.Value] = v
|
||||
}
|
||||
}
|
||||
return nn, nil
|
||||
|
||||
case yaml.SequenceNode:
|
||||
nn := []any{}
|
||||
for i, _ := range n.Content {
|
||||
v, err := gen(n.Content[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
nn = append(nn, v)
|
||||
}
|
||||
return nn, nil
|
||||
|
||||
case yaml.ScalarNode:
|
||||
switch n.Tag {
|
||||
|
||||
case "!!bool":
|
||||
return strconv.ParseBool(n.Value)
|
||||
|
||||
case "!!float":
|
||||
return strconv.ParseFloat(n.Value, 64)
|
||||
|
||||
case "!!int":
|
||||
return strconv.Atoi(n.Value)
|
||||
|
||||
case "!!null":
|
||||
return nil, nil
|
||||
|
||||
case "!!str":
|
||||
return n.Value, nil
|
||||
|
||||
default:
|
||||
return n.Value, nil
|
||||
|
||||
}
|
||||
|
||||
case yaml.AliasNode:
|
||||
return gen(n.Alias)
|
||||
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown yaml value: %s (%s)", n.Value, n.Tag)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
func YAMLtoJSON(n yaml.Node) ([]byte, error) {
|
||||
if n.Kind == 0 {
|
||||
return []byte{}, nil
|
||||
}
|
||||
iface, err := gen(&n)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
blob, err := json.Marshal(iface)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return blob, nil
|
||||
}
|
||||
Reference in New Issue
Block a user