Skip to content

Commit d14a828

Browse files
committed
Fix HCL -> YAML conversion
1 parent cc7735c commit d14a828

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

args/args.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,20 @@ type Config struct {
1515

1616
type Encoding rune
1717

18+
func (e Encoding) String() string {
19+
switch e {
20+
case FlagYAML:
21+
return "YAML"
22+
case FlagTOML:
23+
return "TOML"
24+
case FlagJSON:
25+
return "JSON"
26+
case FlagHCL:
27+
return "HCL"
28+
}
29+
return ""
30+
}
31+
1832
const (
1933
YAML Encoding = FlagYAML
2034
TOML Encoding = FlagTOML

main.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ Convert YAML, TOML, JSON, or HCL to YAML, TOML, JSON, or HCL.
4242
-cj -c = HCL to JSON
4343
-cc = HCL to HCL
4444
-n Do not covert Infinity, -Infinity, and NaN to/from strings
45-
-e Escape HTML (JSON/HCL output only)
45+
-e Escape HTML (JSON output only)
4646
-k Attempt to parse keys as objects or numbers types (YAML output only)
4747
-h Show this help message
4848
@@ -97,12 +97,12 @@ func Run(stdin io.Reader, stdout, stderr io.Writer, osArgs []string) (code int)
9797
// TODO: if from == to, don't do yaml decode/encode to avoid stringifying the keys
9898
rep, err := from(input, config)
9999
if err != nil {
100-
fmt.Fprintf(stderr, "Error: %s\n", err)
100+
fmt.Fprintf(stderr, "Error parsing %s: %s\n", config.From, err)
101101
return 1
102102
}
103103
output, err := to(rep, config)
104104
if err != nil {
105-
fmt.Fprintf(stderr, "Error: %s\n", err)
105+
fmt.Fprintf(stderr, "Error writing %s: %s\n", config.To, err)
106106
return 1
107107
}
108108
fmt.Fprintf(stdout, "%s", output)
@@ -147,7 +147,7 @@ func fromJSON(input []byte, _ *args.Config) (interface{}, error) {
147147
return data, json.Unmarshal(input, &data)
148148
}
149149

150-
func fromHCL(input []byte, config *args.Config) (interface{}, error) {
150+
func fromHCL(input []byte, _ *args.Config) (interface{}, error) {
151151
if len(bytes.TrimSpace(input)) == 0 {
152152
return nil, nil
153153
}

yaml/encoder.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func (e *Encoder) yamlify(in interface{}) interface{} {
3131
out[e.yamlifyKey(k)] = e.yamlify(v)
3232
}
3333
return out
34-
case map[interface{}]interface{}: // test!
34+
case map[interface{}]interface{}: // TODO: test
3535
out := map[interface{}]interface{}{}
3636
for k, v := range in {
3737
switch k := k.(type) {
@@ -48,6 +48,12 @@ func (e *Encoder) yamlify(in interface{}) interface{} {
4848
out[i] = e.yamlify(v)
4949
}
5050
return out
51+
case []map[string]interface{}: // TODO: test
52+
out := make([]interface{}, len(in))
53+
for i, v := range in {
54+
out[i] = e.yamlify(v)
55+
}
56+
return out
5157
default:
5258
return e.yamlifyOther(in)
5359
}

0 commit comments

Comments
 (0)