Skip to content

Commit 5514d23

Browse files
author
Mike Farah
committed
Can update arrays
1 parent 5bb0934 commit 5514d23

File tree

2 files changed

+29
-6
lines changed

2 files changed

+29
-6
lines changed

yaml.go

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ func newYaml(args []string) interface{} {
162162

163163
parsedData := make(yaml.MapSlice, 0)
164164

165-
return updateParsedData(parsedData, writeCommands)
165+
return updateParsedData(parsedData, writeCommands, "")
166166
}
167167

168168
func writeProperty(cmd *cobra.Command, args []string) {
@@ -177,18 +177,26 @@ func writeProperty(cmd *cobra.Command, args []string) {
177177
}
178178
}
179179

180-
func updateParsedData(parsedData yaml.MapSlice, writeCommands yaml.MapSlice) yaml.MapSlice {
180+
func updateParsedData(parsedData yaml.MapSlice, writeCommands yaml.MapSlice, prependCommand string) interface{} {
181+
var prefix = ""
182+
if prependCommand != "" {
183+
prefix = prependCommand + "."
184+
}
181185
for _, entry := range writeCommands {
182-
path := entry.Key
186+
path := prefix + entry.Key.(string)
183187
value := entry.Value
184-
var paths = parsePath(path.(string))
188+
var paths = parsePath(path)
185189
parsedData = writeMap(parsedData, paths, value)
186190
}
191+
if prependCommand != "" {
192+
return readMap(parsedData, prependCommand, make([]string, 0))
193+
}
187194
return parsedData
188195
}
189196

190197
func updateYaml(args []string) interface{} {
191198
var writeCommands yaml.MapSlice
199+
var prependCommand = ""
192200
if writeScript != "" {
193201
readDataOrDie(writeScript, &writeCommands, false)
194202
} else if len(args) < 3 {
@@ -199,9 +207,16 @@ func updateYaml(args []string) interface{} {
199207
}
200208

201209
var parsedData yaml.MapSlice
202-
readDataOrDie(args[0], &parsedData, inputJSON)
210+
err := readData(args[0], &parsedData, inputJSON)
211+
if err != nil {
212+
var generalData interface{}
213+
readDataOrDie(args[0], &generalData, inputJSON)
214+
item := yaml.MapItem{Key: "thing", Value: generalData}
215+
parsedData = yaml.MapSlice{item}
216+
prependCommand = "thing"
217+
}
203218

204-
return updateParsedData(parsedData, writeCommands)
219+
return updateParsedData(parsedData, writeCommands, prependCommand)
205220
}
206221

207222
func parseValue(argument string) interface{} {

yaml_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@ func TestUpdateYaml(t *testing.T) {
6363
formattedResult)
6464
}
6565

66+
func TestUpdateYamlArray(t *testing.T) {
67+
result := updateYaml([]string{"sample_array.yaml", "[0]", "3"})
68+
formattedResult := fmt.Sprintf("%v", result)
69+
assertResult(t,
70+
"[3 2 3]",
71+
formattedResult)
72+
}
73+
6674
func TestUpdateYaml_WithScript(t *testing.T) {
6775
writeScript = "instruction_sample.yaml"
6876
updateYaml([]string{"sample.yaml"})

0 commit comments

Comments
 (0)