@@ -117,15 +117,26 @@ func readProperty(cmd *cobra.Command, args []string) {
117
117
}
118
118
119
119
func read (args []string ) interface {} {
120
- var parsedData yaml.MapSlice
121
120
122
- readData (args [0 ], & parsedData , inputJSON )
121
+ var parsedData yaml.MapSlice
122
+ var path = ""
123
+ if len (args ) > 1 {
124
+ path = args [1 ]
125
+ }
126
+ err := readData (args [0 ], & parsedData , inputJSON )
127
+ if err != nil {
128
+ var generalData interface {}
129
+ readDataOrDie (args [0 ], & generalData , inputJSON )
130
+ item := yaml.MapItem {Key : "thing" , Value : generalData }
131
+ parsedData = yaml.MapSlice {item }
132
+ path = "thing." + path
133
+ }
123
134
124
- if len ( args ) == 1 {
135
+ if path == "" {
125
136
return parsedData
126
137
}
127
138
128
- var paths = parsePath (args [ 1 ] )
139
+ var paths = parsePath (path )
129
140
130
141
return readMap (parsedData , paths [0 ], paths [1 :len (paths )])
131
142
}
@@ -141,7 +152,7 @@ func newProperty(cmd *cobra.Command, args []string) {
141
152
func newYaml (args []string ) interface {} {
142
153
var writeCommands yaml.MapSlice
143
154
if writeScript != "" {
144
- readData (writeScript , & writeCommands , false )
155
+ readDataOrDie (writeScript , & writeCommands , false )
145
156
} else if len (args ) < 2 {
146
157
die ("Must provide <path_to_update> <value>" )
147
158
} else {
@@ -179,7 +190,7 @@ func updateParsedData(parsedData yaml.MapSlice, writeCommands yaml.MapSlice) yam
179
190
func updateYaml (args []string ) interface {} {
180
191
var writeCommands yaml.MapSlice
181
192
if writeScript != "" {
182
- readData (writeScript , & writeCommands , false )
193
+ readDataOrDie (writeScript , & writeCommands , false )
183
194
} else if len (args ) < 3 {
184
195
die ("Must provide <filename> <path_to_update> <value>" )
185
196
} else {
@@ -188,7 +199,7 @@ func updateYaml(args []string) interface{} {
188
199
}
189
200
190
201
var parsedData yaml.MapSlice
191
- readData (args [0 ], & parsedData , inputJSON )
202
+ readDataOrDie (args [0 ], & parsedData , inputJSON )
192
203
193
204
return updateParsedData (parsedData , writeCommands )
194
205
}
@@ -234,7 +245,14 @@ func yamlToString(context interface{}) string {
234
245
return outStr
235
246
}
236
247
237
- func readData (filename string , parsedData interface {}, readAsJSON bool ) {
248
+ func readDataOrDie (filename string , parsedData interface {}, readAsJSON bool ) {
249
+ err := readData (filename , parsedData , readAsJSON )
250
+ if err != nil {
251
+ die ("error parsing data: " , err )
252
+ }
253
+ }
254
+
255
+ func readData (filename string , parsedData interface {}, readAsJSON bool ) error {
238
256
if filename == "" {
239
257
die ("Must provide filename" )
240
258
}
@@ -246,10 +264,7 @@ func readData(filename string, parsedData interface{}, readAsJSON bool) {
246
264
rawData = readFile (filename )
247
265
}
248
266
249
- err := yaml .Unmarshal ([]byte (rawData ), parsedData )
250
- if err != nil {
251
- die ("error parsing data: " , err )
252
- }
267
+ return yaml .Unmarshal ([]byte (rawData ), parsedData )
253
268
}
254
269
255
270
func readStdin () []byte {
0 commit comments