...
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
25
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
39
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
53
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
67
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
81
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
95
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