refactor(yaml): enhance yaml encoding with consistent formatting and quotes
Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
parent
f7f04e7c8a
commit
04ec28993e
|
|
@ -196,7 +196,7 @@ func TestToYaml(t *testing.T) {
|
|||
// https://github.com/helmfile/helmfile/issues/2024
|
||||
name: "test unmarshalling issue 2024",
|
||||
input: map[string]any{"thisShouldBeString": "01234567890123456789"},
|
||||
expected: `'thisShouldBeString': '01234567890123456789'
|
||||
expected: `thisShouldBeString: "01234567890123456789"
|
||||
`,
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -21,15 +21,37 @@ func NewEncoder(w io.Writer) Encoder {
|
|||
return yaml.NewEncoder(w)
|
||||
}
|
||||
|
||||
return v3.NewEncoder(w)
|
||||
v3Encoder := v3.NewEncoder(w)
|
||||
v3Encoder.SetIndent(2)
|
||||
return v3Encoder
|
||||
}
|
||||
|
||||
func Unmarshal(data []byte, v any) error {
|
||||
func Marshal(v any) ([]byte, error) {
|
||||
var b bytes.Buffer
|
||||
if runtime.GoccyGoYaml {
|
||||
return yaml.Unmarshal(data, v)
|
||||
yamlEncoderOpts := []yaml.EncodeOption{
|
||||
yaml.Indent(2),
|
||||
yaml.UseSingleQuote(true),
|
||||
yaml.UseLiteralStyleIfMultiline(true),
|
||||
}
|
||||
yamlEncoder := yaml.NewEncoder(
|
||||
&b,
|
||||
yamlEncoderOpts...,
|
||||
)
|
||||
err := yamlEncoder.Encode(v)
|
||||
defer func() {
|
||||
_ = yamlEncoder.Close()
|
||||
}()
|
||||
return b.Bytes(), err
|
||||
}
|
||||
|
||||
return v3.Unmarshal(data, v)
|
||||
v3Encoder := v3.NewEncoder(&b)
|
||||
v3Encoder.SetIndent(2)
|
||||
err := v3Encoder.Encode(v)
|
||||
defer func() {
|
||||
_ = v3Encoder.Close()
|
||||
}()
|
||||
return b.Bytes(), err
|
||||
}
|
||||
|
||||
// NewDecoder creates and returns a function that is used to decode a YAML document
|
||||
|
|
@ -63,24 +85,10 @@ func NewDecoder(data []byte, strict bool) func(any) error {
|
|||
}
|
||||
}
|
||||
|
||||
func Marshal(v any) ([]byte, error) {
|
||||
func Unmarshal(data []byte, v any) error {
|
||||
if runtime.GoccyGoYaml {
|
||||
var b bytes.Buffer
|
||||
yamlEncoderOpts := []yaml.EncodeOption{
|
||||
yaml.Indent(2),
|
||||
yaml.UseSingleQuote(true),
|
||||
yaml.UseLiteralStyleIfMultiline(true),
|
||||
}
|
||||
yamlEncoder := yaml.NewEncoder(
|
||||
&b,
|
||||
yamlEncoderOpts...,
|
||||
)
|
||||
err := yamlEncoder.Encode(v)
|
||||
defer func() {
|
||||
_ = yamlEncoder.Close()
|
||||
}()
|
||||
return b.Bytes(), err
|
||||
return yaml.Unmarshal(data, v)
|
||||
}
|
||||
|
||||
return v3.Marshal(v)
|
||||
return v3.Unmarshal(data, v)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue