...

Source file src/github.com/ory/x/cmdx/noise_printer.go

Documentation: github.com/ory/x/cmdx

     1  package cmdx
     2  
     3  import (
     4  	"fmt"
     5  	"io"
     6  
     7  	"github.com/spf13/cobra"
     8  	"github.com/spf13/pflag"
     9  )
    10  
    11  type ConditionalPrinter struct {
    12  	w     io.Writer
    13  	print bool
    14  }
    15  
    16  const (
    17  	FlagQuiet = "quiet"
    18  )
    19  
    20  func RegisterNoiseFlags(flags *pflag.FlagSet) {
    21  	flags.BoolP(FlagQuiet, FlagQuiet[:1], false, "Be quiet with output printing.")
    22  }
    23  
    24  // NewLoudOutPrinter returns a ConditionalPrinter that
    25  // only prints to cmd.OutOrStdout when --quiet is not set
    26  func NewLoudOutPrinter(cmd *cobra.Command) *ConditionalPrinter {
    27  	quiet, err := cmd.Flags().GetBool(FlagQuiet)
    28  	if err != nil {
    29  		Fatalf(err.Error())
    30  	}
    31  
    32  	return &ConditionalPrinter{
    33  		w:     cmd.OutOrStdout(),
    34  		print: !quiet,
    35  	}
    36  }
    37  
    38  // NewQuietOutPrinter returns a ConditionalPrinter that
    39  // only prints to cmd.OutOrStdout when --quiet is set
    40  func NewQuietOutPrinter(cmd *cobra.Command) *ConditionalPrinter {
    41  	quiet, err := cmd.Flags().GetBool(FlagQuiet)
    42  	if err != nil {
    43  		Fatalf(err.Error())
    44  	}
    45  
    46  	return &ConditionalPrinter{
    47  		w:     cmd.OutOrStdout(),
    48  		print: quiet,
    49  	}
    50  }
    51  
    52  // NewLoudErrPrinter returns a ConditionalPrinter that
    53  // only prints to cmd.ErrOrStderr when --quiet is not set
    54  func NewLoudErrPrinter(cmd *cobra.Command) *ConditionalPrinter {
    55  	quiet, err := cmd.Flags().GetBool(FlagQuiet)
    56  	if err != nil {
    57  		Fatalf(err.Error())
    58  	}
    59  
    60  	return &ConditionalPrinter{
    61  		w:     cmd.ErrOrStderr(),
    62  		print: !quiet,
    63  	}
    64  }
    65  
    66  // NewQuietErrPrinter returns a ConditionalPrinter that
    67  // only prints to cmd.ErrOrStderr when --quiet is set
    68  func NewQuietErrPrinter(cmd *cobra.Command) *ConditionalPrinter {
    69  	quiet, err := cmd.Flags().GetBool(FlagQuiet)
    70  	if err != nil {
    71  		Fatalf(err.Error())
    72  	}
    73  
    74  	return &ConditionalPrinter{
    75  		w:     cmd.ErrOrStderr(),
    76  		print: quiet,
    77  	}
    78  }
    79  
    80  // NewLoudPrinter returns a ConditionalPrinter that
    81  // only prints to w when --quiet is not set
    82  func NewLoudPrinter(cmd *cobra.Command, w io.Writer) *ConditionalPrinter {
    83  	quiet, err := cmd.Flags().GetBool(FlagQuiet)
    84  	if err != nil {
    85  		Fatalf(err.Error())
    86  	}
    87  
    88  	return &ConditionalPrinter{
    89  		w:     w,
    90  		print: !quiet,
    91  	}
    92  }
    93  
    94  // NewQuietPrinter returns a ConditionalPrinter that
    95  // only prints to w when --quiet is set
    96  func NewQuietPrinter(cmd *cobra.Command, w io.Writer) *ConditionalPrinter {
    97  	quiet, err := cmd.Flags().GetBool(FlagQuiet)
    98  	if err != nil {
    99  		Fatalf(err.Error())
   100  	}
   101  
   102  	return &ConditionalPrinter{
   103  		w:     w,
   104  		print: quiet,
   105  	}
   106  }
   107  
   108  func NewConditionalPrinter(w io.Writer, print bool) *ConditionalPrinter {
   109  	return &ConditionalPrinter{
   110  		w:     w,
   111  		print: print,
   112  	}
   113  }
   114  
   115  func (p *ConditionalPrinter) Println(a ...interface{}) (n int, err error) {
   116  	if p.print {
   117  		return fmt.Fprintln(p.w, a...)
   118  	}
   119  	return
   120  }
   121  
   122  func (p *ConditionalPrinter) Print(a ...interface{}) (n int, err error) {
   123  	if p.print {
   124  		return fmt.Fprint(p.w, a...)
   125  	}
   126  	return
   127  }
   128  
   129  func (p *ConditionalPrinter) Printf(format string, a ...interface{}) (n int, err error) {
   130  	if p.print {
   131  		return fmt.Fprintf(p.w, format, a...)
   132  	}
   133  	return
   134  }
   135  

View as plain text