github.com/jlmeeker/kismatic@v1.10.1-0.20180612190640-57f9005a1f1a/pkg/inspector/cmd/printer.go (about)

     1  package cmd
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"io"
     7  	"text/tabwriter"
     8  
     9  	"github.com/apprenda/kismatic/pkg/inspector/rule"
    10  )
    11  
    12  func printResults(out io.Writer, results []rule.Result, outputType string) error {
    13  	switch outputType {
    14  	case "json":
    15  		return printResultsAsJSON(out, results)
    16  	case "table":
    17  		return printResultsAsTable(out, results)
    18  	default:
    19  		return fmt.Errorf("output type %q not supported", outputType)
    20  	}
    21  }
    22  
    23  func printResultsAsJSON(out io.Writer, results []rule.Result) error {
    24  	err := json.NewEncoder(out).Encode(results)
    25  	if err != nil {
    26  		return fmt.Errorf("error marshaling results as JSON: %v", err)
    27  	}
    28  	return nil
    29  }
    30  
    31  func printResultsAsTable(out io.Writer, results []rule.Result) error {
    32  	w := tabwriter.NewWriter(out, 1, 8, 4, '\t', 0)
    33  	fmt.Fprintf(w, "CHECK\tSUCCESS\tMSG\n")
    34  	for _, r := range results {
    35  		fmt.Fprintf(w, "%s\t%t\t%v\n", r.Name, r.Success, r.Error)
    36  	}
    37  	w.Flush()
    38  	return nil
    39  }