@@ -93,14 +93,14 @@ var ReleaseVersion string
9393var BuildVersion string
9494
9595func main () {
96- err := mainImplementation (os .Args [1 :])
96+ err := mainImplementation (os .Stdout , os . Stderr , os . Args [1 :])
9797 if err != nil {
9898 fmt .Fprintf (os .Stderr , "error: %s\n " , err )
9999 os .Exit (1 )
100100 }
101101}
102102
103- func mainImplementation (args []string ) error {
103+ func mainImplementation (stdout , stderr io. Writer , args []string ) error {
104104 var nameStyle sizes.NameStyle = sizes .NameStyleFull
105105 var cpuprofile string
106106 var jsonOutput bool
@@ -116,7 +116,7 @@ func mainImplementation(args []string) error {
116116
117117 flags := pflag .NewFlagSet ("git-sizer" , pflag .ContinueOnError )
118118 flags .Usage = func () {
119- fmt .Print ( usage )
119+ fmt .Fprint ( stdout , usage )
120120 }
121121
122122 flags .VarP (
@@ -154,11 +154,15 @@ func mainImplementation(args []string) error {
154154 flags .BoolVarP (& jsonOutput , "json" , "j" , false , "output results in JSON format" )
155155 flags .IntVar (& jsonVersion , "json-version" , 1 , "JSON format version to output (1 or 2)" )
156156
157- atty , err := isatty .Isatty (os .Stderr .Fd ())
158- if err != nil {
159- atty = false
157+ defaultProgress := false
158+ if f , ok := stderr .(* os.File ); ok {
159+ atty , err := isatty .Isatty (f .Fd ())
160+ if err == nil && atty {
161+ defaultProgress = true
162+ }
160163 }
161- flags .BoolVar (& progress , "progress" , atty , "report progress to stderr" )
164+
165+ flags .BoolVar (& progress , "progress" , defaultProgress , "report progress to stderr" )
162166 flags .BoolVar (& version , "version" , false , "report the git-sizer version number" )
163167 flags .Var (& NegatedBoolValue {& progress }, "no-progress" , "suppress progress output" )
164168 flags .Lookup ("no-progress" ).NoOptDefVal = "true"
@@ -205,9 +209,9 @@ func mainImplementation(args []string) error {
205209
206210 if version {
207211 if ReleaseVersion != "" {
208- fmt .Printf ( "git-sizer release %s\n " , ReleaseVersion )
212+ fmt .Fprintf ( stdout , "git-sizer release %s\n " , ReleaseVersion )
209213 } else {
210- fmt .Printf ( "git-sizer build %s\n " , BuildVersion )
214+ fmt .Fprintf ( stdout , "git-sizer build %s\n " , BuildVersion )
211215 }
212216 return nil
213217 }
@@ -275,13 +279,13 @@ func mainImplementation(args []string) error {
275279 }
276280
277281 if showRefs {
278- fmt .Fprintf (os . Stderr , "References (included references marked with '+'):\n " )
279- rg = refopts .NewShowRefGrouper (rg , os . Stderr )
282+ fmt .Fprintf (stderr , "References (included references marked with '+'):\n " )
283+ rg = refopts .NewShowRefGrouper (rg , stderr )
280284 }
281285
282286 var progressMeter meter.Progress = meter .NoProgressMeter
283287 if progress {
284- progressMeter = meter .NewProgressMeter (os . Stderr , 100 * time .Millisecond )
288+ progressMeter = meter .NewProgressMeter (stderr , 100 * time .Millisecond )
285289 }
286290
287291 historySize , err := sizes .ScanRepositoryUsingGraph (repo , rg , nameStyle , progressMeter )
@@ -303,11 +307,10 @@ func mainImplementation(args []string) error {
303307 if err != nil {
304308 return fmt .Errorf ("could not convert %v to json: %w" , historySize , err )
305309 }
306- fmt .Printf ( "%s\n " , j )
310+ fmt .Fprintf ( stdout , "%s\n " , j )
307311 } else {
308312 if _ , err := io .WriteString (
309- os .Stdout ,
310- historySize .TableString (rg .Groups (), threshold , nameStyle ),
313+ stdout , historySize .TableString (rg .Groups (), threshold , nameStyle ),
311314 ); err != nil {
312315 return fmt .Errorf ("writing output: %w" , err )
313316 }
0 commit comments