diff --git a/cmd/yamltool/parse.go b/cmd/yamltool/parse.go index 7c68331..85b34d2 100644 --- a/cmd/yamltool/parse.go +++ b/cmd/yamltool/parse.go @@ -2,7 +2,11 @@ package main import ( "bytes" + "fmt" + "github.com/goccy/go-yaml" + "github.com/spf13/cobra" + "os" ) @@ -24,3 +28,13 @@ func parse(data []byte) (yaml.MapSlice, error) { } return result, nil } + +func parseFiles(cmd *cobra.Command, args []string) error { + for _, arg := range args { + _, err := parse(read(arg)) + if err != nil { + fmt.Printf("%s: %v\n", arg, err.Error()) + } + } + return nil +} diff --git a/cmd/yamltool/yamltool.go b/cmd/yamltool/yamltool.go index 81d4950..692a580 100644 --- a/cmd/yamltool/yamltool.go +++ b/cmd/yamltool/yamltool.go @@ -57,6 +57,16 @@ Shows the additions and modifications in compared to `, } cmd.AddCommand(merge) + parse := &cobra.Command{ + Use: "parse [file1] ... [fileN]", + Short: "Parse yaml files.", + Long: `Parse yaml files, usually gives better error messages than yamllint or yq`, + RunE: func(cmd *cobra.Command, args []string) error { + return parseFiles(cmd, args) + }, + } + cmd.AddCommand(parse) + diff.PersistentFlags().IntVarP(&VERBOSITY, "array-output-level", "v", 3, `Array output level: , 0: no output, only exit status, diff --git a/go.mod b/go.mod index fd159ba..5718c96 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module git.wamblee.org/public/gotools -go 1.23.4 +go 1.24.7 require ( github.com/goccy/go-yaml v1.15.13