mirror of
https://github.com/mikefarah/yq.git
synced 2024-12-19 20:19:04 +00:00
Fixed merge new array
This commit is contained in:
parent
1f7f1b0def
commit
690da9ee74
@ -1,3 +1,8 @@
|
|||||||
|
# Update doco / notes
|
||||||
|
- --autocreate=false to turn off default flags
|
||||||
|
- add comments to test yaml to ensure they are kept on updating.
|
||||||
|
- update built in command notes to includes quotes around path args.
|
||||||
|
|
||||||
# New Features
|
# New Features
|
||||||
- Keeps comments and formatting (e.g. inline arrays)!
|
- Keeps comments and formatting (e.g. inline arrays)!
|
||||||
- Handles anchors!
|
- Handles anchors!
|
||||||
|
@ -807,6 +807,18 @@ func TestNewCmd(t *testing.T) {
|
|||||||
test.AssertResult(t, expectedOutput, result.Output)
|
test.AssertResult(t, expectedOutput, result.Output)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNewArrayCmd(t *testing.T) {
|
||||||
|
cmd := getRootCommand()
|
||||||
|
result := test.RunCmd(cmd, "new b[0] 3")
|
||||||
|
if result.Error != nil {
|
||||||
|
t.Error(result.Error)
|
||||||
|
}
|
||||||
|
expectedOutput := `b:
|
||||||
|
- 3
|
||||||
|
`
|
||||||
|
test.AssertResult(t, expectedOutput, result.Output)
|
||||||
|
}
|
||||||
|
|
||||||
func TestNewCmd_Error(t *testing.T) {
|
func TestNewCmd_Error(t *testing.T) {
|
||||||
cmd := getRootCommand()
|
cmd := getRootCommand()
|
||||||
result := test.RunCmd(cmd, "new b.c")
|
result := test.RunCmd(cmd, "new b.c")
|
||||||
@ -1334,7 +1346,7 @@ func TestMergeOverwriteCmd(t *testing.T) {
|
|||||||
if result.Error != nil {
|
if result.Error != nil {
|
||||||
t.Error(result.Error)
|
t.Error(result.Error)
|
||||||
}
|
}
|
||||||
expectedOutput := `a: other
|
expectedOutput := `a: other # better than the original
|
||||||
b: [3, 4]
|
b: [3, 4]
|
||||||
c:
|
c:
|
||||||
test: 1
|
test: 1
|
||||||
@ -1348,7 +1360,7 @@ func TestMergeAppendCmd(t *testing.T) {
|
|||||||
if result.Error != nil {
|
if result.Error != nil {
|
||||||
t.Error(result.Error)
|
t.Error(result.Error)
|
||||||
}
|
}
|
||||||
expectedOutput := `a: simple
|
expectedOutput := `a: simple # just the best
|
||||||
b: [1, 2, 3, 4]
|
b: [1, 2, 3, 4]
|
||||||
c:
|
c:
|
||||||
test: 1
|
test: 1
|
||||||
@ -1366,26 +1378,27 @@ func TestMergeArraysCmd(t *testing.T) {
|
|||||||
test.AssertResult(t, expectedOutput, result.Output)
|
test.AssertResult(t, expectedOutput, result.Output)
|
||||||
}
|
}
|
||||||
|
|
||||||
func xTestMergeCmd_Multi(t *testing.T) {
|
func TestMergeCmd_Multi(t *testing.T) {
|
||||||
cmd := getRootCommand()
|
cmd := getRootCommand()
|
||||||
result := test.RunCmd(cmd, "merge -d1 examples/multiple_docs_small.yaml examples/data2.yaml")
|
result := test.RunCmd(cmd, "merge -d1 examples/multiple_docs_small.yaml examples/data1.yaml")
|
||||||
if result.Error != nil {
|
if result.Error != nil {
|
||||||
t.Error(result.Error)
|
t.Error(result.Error)
|
||||||
}
|
}
|
||||||
expectedOutput := `a: Easy! as one two three
|
expectedOutput := `a: Easy! as one two three
|
||||||
---
|
---
|
||||||
a: other
|
|
||||||
another:
|
another:
|
||||||
document: here
|
document: here
|
||||||
|
a: simple # just the best
|
||||||
b:
|
b:
|
||||||
- 3
|
- 1
|
||||||
- 4
|
- 2
|
||||||
c:
|
c:
|
||||||
test: 1
|
test: 1
|
||||||
---
|
---
|
||||||
- 1
|
- 1
|
||||||
- 2`
|
- 2
|
||||||
test.AssertResult(t, expectedOutput, strings.Trim(result.Output, "\n "))
|
`
|
||||||
|
test.AssertResult(t, expectedOutput, result.Output)
|
||||||
}
|
}
|
||||||
|
|
||||||
func xTestMergeYamlMultiAllCmd(t *testing.T) {
|
func xTestMergeYamlMultiAllCmd(t *testing.T) {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
a: simple
|
a: simple # just the best
|
||||||
b: [1, 2]
|
b: [1, 2]
|
||||||
c:
|
c:
|
||||||
test: 1
|
test: 1
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
a: other
|
a: other # better than the original
|
||||||
b: [3, 4]
|
b: [3, 4]
|
||||||
c:
|
c:
|
||||||
toast: leave
|
toast: leave
|
||||||
|
@ -234,7 +234,13 @@ func (n *navigator) recurseArray(value *yaml.Node, head string, tail []string, p
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrapf(err, "Error parsing array index '%v' for '%v'", head, PathStackToString(pathStack))
|
return errors.Wrapf(err, "Error parsing array index '%v' for '%v'", head, PathStackToString(pathStack))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for int64(len(value.Content)) <= index {
|
||||||
|
value.Content = append(value.Content, &yaml.Node{Kind: guessKind(head, tail, 0)})
|
||||||
|
}
|
||||||
|
|
||||||
if index >= int64(len(value.Content)) {
|
if index >= int64(len(value.Content)) {
|
||||||
|
log.Debug("index longer than array length, aborting!")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
value.Content[index] = n.getOrReplace(value.Content[index], guessKind(head, tail, value.Content[index].Kind))
|
value.Content[index] = n.getOrReplace(value.Content[index], guessKind(head, tail, value.Content[index].Kind))
|
||||||
|
Loading…
Reference in New Issue
Block a user