diff --git a/main.go b/main.go index 879ad1e..5ad5e9e 100644 --- a/main.go +++ b/main.go @@ -20,6 +20,7 @@ var ( kubeConfig = flag.String("kubeconfig", "", "Kube config location") context = flag.String("context", "", "Kube config context") namespace = flag.String("namespace", "", "Limit to namespace") + pretty = flag.Bool("pretty", false, "Pretty Print json") ) func main() { @@ -52,7 +53,7 @@ func mainErr() error { watcher.MatchName(arg) } - differ, err := differ.New(clients) + differ, err := differ.New(clients, pretty) if err != nil { return err } diff --git a/pkg/differ/differ.go b/pkg/differ/differ.go index 05f9677..2b5d90b 100644 --- a/pkg/differ/differ.go +++ b/pkg/differ/differ.go @@ -13,18 +13,20 @@ import ( ) type Differ struct { - cache map[string]runtime.Object - mapper meta.RESTMapper + cache map[string]runtime.Object + mapper meta.RESTMapper + prettyPrint bool } -func New(clients *clients.Clients) (*Differ, error) { +func New(clients *clients.Clients, pretty *bool) (*Differ, error) { mapper, err := clients.ToRESTMapper() if err != nil { return nil, err } return &Differ{ - cache: map[string]runtime.Object{}, - mapper: mapper, + cache: map[string]runtime.Object{}, + mapper: mapper, + prettyPrint: *pretty, }, nil } @@ -67,7 +69,21 @@ func (d *Differ) Print(obj runtime.Object) error { } if string(patch) != "{}" { - fmt.Printf("%s %s %s\n", meta.GetResourceVersion(), printKey, patch) + patchToPrint := patch + + if d.prettyPrint { + + var result map[string]interface{} + if err := json.Unmarshal([]byte(patch), &result); err != nil { + return err + } + + patchToPrint, err = json.MarshalIndent(result, "", " ") + if err != nil { + return err + } + } + fmt.Printf("%s %s %s\n", meta.GetResourceVersion(), printKey, patchToPrint) } return nil