mirror of
https://github.com/mikefarah/yq.git
synced 2025-01-27 08:55:37 +00:00
#20 Read the top level keys only
This commit is contained in:
parent
f18c5161e0
commit
3e83ff7ac8
6
test/fixture/keyonly.yaml
Normal file
6
test/fixture/keyonly.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
a:
|
||||||
|
b:
|
||||||
|
c: 1
|
||||||
|
d:
|
||||||
|
e: 2
|
||||||
|
f:
|
9
yq.go
9
yq.go
@ -25,6 +25,7 @@ var writeInplace = false
|
|||||||
var writeScript = ""
|
var writeScript = ""
|
||||||
var outputToJSON = false
|
var outputToJSON = false
|
||||||
var overwriteFlag = false
|
var overwriteFlag = false
|
||||||
|
var keyOnlyFlag = false
|
||||||
var allowEmptyFlag = false
|
var allowEmptyFlag = false
|
||||||
var appendFlag = false
|
var appendFlag = false
|
||||||
var verbose = false
|
var verbose = false
|
||||||
@ -111,6 +112,7 @@ yq r -- things.yaml --key-starting-with-dashes
|
|||||||
}
|
}
|
||||||
cmdRead.PersistentFlags().StringVarP(&docIndex, "doc", "d", "0", "process document index number (0 based, * for all documents)")
|
cmdRead.PersistentFlags().StringVarP(&docIndex, "doc", "d", "0", "process document index number (0 based, * for all documents)")
|
||||||
cmdRead.PersistentFlags().BoolVarP(&outputToJSON, "tojson", "j", false, "output as json")
|
cmdRead.PersistentFlags().BoolVarP(&outputToJSON, "tojson", "j", false, "output as json")
|
||||||
|
cmdRead.PersistentFlags().BoolVarP(&keyOnlyFlag, "keyonly", "k", false, "output with top level keys only")
|
||||||
return cmdRead
|
return cmdRead
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -304,6 +306,13 @@ func readProperty(cmd *cobra.Command, args []string) error {
|
|||||||
dataBucket = mappedDocs
|
dataBucket = mappedDocs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if keyOnlyFlag {
|
||||||
|
for _, value := range dataBucket.(yaml.MapSlice) {
|
||||||
|
cmd.Println(value.Key)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
dataStr, err := toString(dataBucket)
|
dataStr, err := toString(dataBucket)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
26
yq_test.go
26
yq_test.go
@ -1,12 +1,14 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"runtime"
|
"runtime"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/mikefarah/yq/v2/pkg/marshal"
|
"github.com/mikefarah/yq/v2/pkg/marshal"
|
||||||
"github.com/mikefarah/yq/v2/test"
|
"github.com/mikefarah/yq/v2/test"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMultilineString(t *testing.T) {
|
func TestMultilineString(t *testing.T) {
|
||||||
@ -58,3 +60,27 @@ func TestNewYaml_WithUnknownScript(t *testing.T) {
|
|||||||
}
|
}
|
||||||
test.AssertResult(t, expectedOutput, err.Error())
|
test.AssertResult(t, expectedOutput, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestReadWithKeyOnly(t *testing.T) {
|
||||||
|
readCmd := createReadCmd()
|
||||||
|
expectedResult := `b
|
||||||
|
d
|
||||||
|
f
|
||||||
|
`
|
||||||
|
actualResult, err := executeTestCommand(readCmd, "test/fixture/keyonly.yaml", "a", "-k")
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err.Error())
|
||||||
|
}
|
||||||
|
test.AssertResult(t, expectedResult, actualResult)
|
||||||
|
}
|
||||||
|
|
||||||
|
func executeTestCommand(command *cobra.Command, args ...string) (output string, err error) {
|
||||||
|
buf := new(bytes.Buffer)
|
||||||
|
|
||||||
|
command.SetOutput(buf)
|
||||||
|
command.SetArgs(args)
|
||||||
|
|
||||||
|
_, err = command.ExecuteC()
|
||||||
|
|
||||||
|
return buf.String(), err
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user