This is an automated email from the ASF dual-hosted git repository. nferraro pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 8667fdaaab92a667eea05775d88df9505e0a91b1 Author: Doru Bercea <gheorghe-teod.ber...@ibm.com> AuthorDate: Mon Oct 12 16:18:57 2020 -0400 Add output flag to both yaml and json formats. --- pkg/cmd/inspect.go | 34 ++++++++++++++++++++++++++++++++-- pkg/util/kubernetes/util.go | 19 ++----------------- pkg/util/util.go | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 19 deletions(-) diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go index c26cbb6..37d5b70 100644 --- a/pkg/cmd/inspect.go +++ b/pkg/cmd/inspect.go @@ -53,6 +53,7 @@ func newCmdInspect(rootCmdOptions *RootCmdOptions) (*cobra.Command, *inspectCmdO }, } + cmd.Flags().StringP("output", "o", "", "Output format. One of: json|yaml") // TODO: support the following options: cmd.Flags().Bool("all-dependencies", false, "Include both top level and transitive dependencies.") cmd.Flags().String("dependencies-directory", "", "If set, directory will contain all integration dependencies.") @@ -64,6 +65,7 @@ func newCmdInspect(rootCmdOptions *RootCmdOptions) (*cobra.Command, *inspectCmdO type inspectCmdOptions struct { *RootCmdOptions AllDependencies bool `mapstructure:"all-dependencies"` + OutputFormat string `mapstructure:"output"` DependenciesDirectory string `mapstructure:"dependencies-directory"` AdditionalDependencies string `mapstructure:"additional-dependencies"` } @@ -150,8 +152,16 @@ func (command *inspectCmdOptions) run(args []string) error { dependencies.Merge(trait.AddSourceDependencies(sourceSpec, catalog)) } - for _, dep := range dependencies.List() { - fmt.Printf("%v\n", dep) + if command.OutputFormat != "" { + err := printDependencies(command.OutputFormat, dependencies) + if err != nil { + return err + } + } else { + // Print output in text form. + for _, dep := range dependencies.List() { + fmt.Printf("%v\n", dep) + } } return nil @@ -175,3 +185,23 @@ func generateCatalog() (*camel.RuntimeCatalog, error) { return catalog, nil } + +func printDependencies(format string, dependecies *strset.Set) error { + switch format { + case "yaml": + data, err := util.DependenciesToYAML(dependecies.List()) + if err != nil { + return err + } + fmt.Print(string(data)) + case "json": + data, err := util.DependenciesToJSON(dependecies.List()) + if err != nil { + return err + } + fmt.Print(string(data)) + default: + return errors.New("unknown output format: " + format) + } + return nil +} diff --git a/pkg/util/kubernetes/util.go b/pkg/util/kubernetes/util.go index 9fd960a..0ce1517 100644 --- a/pkg/util/kubernetes/util.go +++ b/pkg/util/kubernetes/util.go @@ -29,7 +29,7 @@ import ( v1 "github.com/apache/camel-k/pkg/apis/camel/v1" "github.com/apache/camel-k/pkg/client" - yaml2 "gopkg.in/yaml.v2" + "github.com/apache/camel-k/pkg/util" ) // ToJSON -- @@ -44,22 +44,7 @@ func ToYAML(value runtime.Object) ([]byte, error) { return nil, err } - return JSONToYAML(data) -} - -// JSONToYAML -- -func JSONToYAML(src []byte) ([]byte, error) { - jsondata := map[string]interface{}{} - err := json.Unmarshal(src, &jsondata) - if err != nil { - return nil, fmt.Errorf("error unmarshalling json: %v", err) - } - yamldata, err := yaml2.Marshal(&jsondata) - if err != nil { - return nil, fmt.Errorf("error marshalling to yaml: %v", err) - } - - return yamldata, nil + return util.JSONToYAML(data) } // GetConfigMap -- diff --git a/pkg/util/util.go b/pkg/util/util.go index 7b76d88..1ecff9b 100644 --- a/pkg/util/util.go +++ b/pkg/util/util.go @@ -19,6 +19,7 @@ package util import ( "bytes" + "encoding/json" "encoding/xml" "fmt" "io" @@ -31,6 +32,7 @@ import ( "github.com/pkg/errors" "github.com/scylladb/go-set/strset" + yaml2 "gopkg.in/yaml.v2" ) // StringSliceJoin -- @@ -273,3 +275,35 @@ func SortedStringMapKeys(m map[string]string) []string { sort.Strings(res) return res } + +// DependenciesToJSON -- +func DependenciesToJSON(list []string) ([]byte, error) { + jsondata := map[string]interface{}{} + jsondata["dependencies"] = list + return json.Marshal(jsondata) +} + +// DependenciesToYAML -- +func DependenciesToYAML(list []string) ([]byte, error) { + data, err := DependenciesToJSON(list) + if err != nil { + return nil, err + } + + return JSONToYAML(data) +} + +// JSONToYAML -- +func JSONToYAML(src []byte) ([]byte, error) { + jsondata := map[string]interface{}{} + err := json.Unmarshal(src, &jsondata) + if err != nil { + return nil, fmt.Errorf("error unmarshalling json: %v", err) + } + yamldata, err := yaml2.Marshal(&jsondata) + if err != nil { + return nil, fmt.Errorf("error marshalling to yaml: %v", err) + } + + return yamldata, nil +}