mirror of
https://github.com/mikefarah/yq.git
synced 2025-01-12 19:25: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 outputToJSON = false
|
||||
var overwriteFlag = false
|
||||
var keyOnlyFlag = false
|
||||
var allowEmptyFlag = false
|
||||
var appendFlag = 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().BoolVarP(&outputToJSON, "tojson", "j", false, "output as json")
|
||||
cmdRead.PersistentFlags().BoolVarP(&keyOnlyFlag, "keyonly", "k", false, "output with top level keys only")
|
||||
return cmdRead
|
||||
}
|
||||
|
||||
@ -304,6 +306,13 @@ func readProperty(cmd *cobra.Command, args []string) error {
|
||||
dataBucket = mappedDocs
|
||||
}
|
||||
|
||||
if keyOnlyFlag {
|
||||
for _, value := range dataBucket.(yaml.MapSlice) {
|
||||
cmd.Println(value.Key)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
dataStr, err := toString(dataBucket)
|
||||
if err != nil {
|
||||
return err
|
||||
|
26
yq_test.go
26
yq_test.go
@ -1,12 +1,14 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"runtime"
|
||||
"testing"
|
||||
|
||||
"github.com/mikefarah/yq/v2/pkg/marshal"
|
||||
"github.com/mikefarah/yq/v2/test"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func TestMultilineString(t *testing.T) {
|
||||
@ -58,3 +60,27 @@ func TestNewYaml_WithUnknownScript(t *testing.T) {
|
||||
}
|
||||
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