Skip to content

Commit 631f619

Browse files
committed
git-sizer.go: set up the showRefGrouper here
This makes it unnecessary for `RefGroupBuilder` to know about logging or to refer to `os.Stderr` directly.
1 parent 05e05d1 commit 631f619

File tree

3 files changed

+24
-16
lines changed

3 files changed

+24
-16
lines changed

git-sizer.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ func mainImplementation(args []string) error {
108108
var threshold sizes.Threshold = 1
109109
var progress bool
110110
var version bool
111+
var showRefs bool
111112

112113
// Try to open the repository, but it's not an error yet if this
113114
// fails, because the user might only be asking for `--help`.
@@ -179,6 +180,8 @@ func mainImplementation(args []string) error {
179180

180181
rgb.AddRefopts(flags)
181182

183+
flags.BoolVar(&showRefs, "show-refs", false, "list the references being processed")
184+
182185
flags.SortFlags = false
183186

184187
err = flags.Parse(args)
@@ -271,6 +274,11 @@ func mainImplementation(args []string) error {
271274
return err
272275
}
273276

277+
if showRefs {
278+
fmt.Fprintf(os.Stderr, "References (included references marked with '+'):\n")
279+
rg = refopts.NewShowRefGrouper(rg, os.Stderr)
280+
}
281+
274282
var progressMeter meter.Progress = meter.NoProgressMeter
275283
if progress {
276284
progressMeter = meter.NewProgressMeter(os.Stderr, 100*time.Millisecond)

internal/refopts/ref_group_builder.go

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package refopts
22

33
import (
44
"fmt"
5-
"os"
65
"strings"
76

87
"github.com/spf13/pflag"
@@ -21,8 +20,6 @@ type Configger interface {
2120
type RefGroupBuilder struct {
2221
topLevelGroup *refGroup
2322
groups map[sizes.RefGroupSymbol]*refGroup
24-
25-
ShowRefs bool
2623
}
2724

2825
// NewRefGroupBuilder creates and returns a `RefGroupBuilder`
@@ -253,8 +250,6 @@ func (rgb *RefGroupBuilder) AddRefopts(flags *pflag.FlagSet) {
253250
)
254251
flag.Hidden = true
255252
flag.Deprecated = "use --include=@REFGROUP"
256-
257-
flags.BoolVar(&rgb.ShowRefs, "show-refs", false, "list the references being processed")
258253
}
259254

260255
// Finish collects the information gained from processing the options
@@ -280,11 +275,6 @@ func (rgb *RefGroupBuilder) Finish() (sizes.RefGrouper, error) {
280275
refGrouper.refGroups = append(refGrouper.refGroups, *refGrouper.ignoredRefGroup)
281276
}
282277

283-
if rgb.ShowRefs {
284-
fmt.Fprintf(os.Stderr, "References (included references marked with '+'):\n")
285-
return showRefGrouper{&refGrouper, os.Stderr}, nil
286-
}
287-
288278
return &refGrouper, nil
289279
}
290280

internal/refopts/show_ref_grouper.go

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,28 @@ import (
77
"github.com/github/git-sizer/sizes"
88
)
99

10-
// showRefFilter is a `git.ReferenceFilter` that logs its choices to Stderr.
10+
// showRefFilter is a `git.ReferenceFilter` that logs its choices to
11+
// an `io.Writer`.
1112
type showRefGrouper struct {
12-
*refGrouper
13+
sizes.RefGrouper
1314
w io.Writer
1415
}
1516

16-
func (refGrouper showRefGrouper) Categorize(refname string) (bool, []sizes.RefGroupSymbol) {
17-
walk, symbols := refGrouper.refGrouper.Categorize(refname)
17+
// Return a `sizes.RefGrouper` that wraps its argument and behaves
18+
// like it except that it also logs its decisions to an `io.Writer`.
19+
func NewShowRefGrouper(rg sizes.RefGrouper, w io.Writer) sizes.RefGrouper {
20+
return showRefGrouper{
21+
RefGrouper: rg,
22+
w: w,
23+
}
24+
}
25+
26+
func (rg showRefGrouper) Categorize(refname string) (bool, []sizes.RefGroupSymbol) {
27+
walk, symbols := rg.RefGrouper.Categorize(refname)
1828
if walk {
19-
fmt.Fprintf(refGrouper.w, "+ %s\n", refname)
29+
fmt.Fprintf(rg.w, "+ %s\n", refname)
2030
} else {
21-
fmt.Fprintf(refGrouper.w, " %s\n", refname)
31+
fmt.Fprintf(rg.w, " %s\n", refname)
2232
}
2333
return walk, symbols
2434
}

0 commit comments

Comments
 (0)