Skip to content

Commit 367a860

Browse files
committed
more rebust error reporting
1 parent a7e3436 commit 367a860

File tree

2 files changed

+27
-7
lines changed

2 files changed

+27
-7
lines changed

pkg/gitter.go

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,31 @@ type DefaultGitter struct {
5050
DebugOut io.Writer
5151
}
5252

53+
func MaybeSync(w io.Writer) {
54+
if syncer, ok := w.(interface{ Sync() error }); ok {
55+
_ = syncer.Sync()
56+
}
57+
}
58+
5359
func (dg DefaultGitter) Exec(args ...string) (output []byte, err error) {
5460
var sout, serr bytes.Buffer
5561
cmd := exec.Command(dg.Git, args...) /* #nosec G204 */
5662
cmd.Stdout = &sout
5763
cmd.Stderr = &serr
64+
if dg.DebugOut != nil {
65+
fmt.Fprintf(dg.DebugOut, "%q =>", strings.Join(cmd.Args, " "))
66+
MaybeSync(dg.DebugOut)
67+
defer func(w io.Writer) {
68+
result := "OK"
69+
if err != nil {
70+
result = err.Error()
71+
} else if serr.Len() > 0 {
72+
result = serr.String()
73+
}
74+
fmt.Fprintf(w, " (%v+%v) %v\n", sout.Len(), serr.Len(), result)
75+
MaybeSync(w)
76+
}(dg.DebugOut)
77+
}
5878
err = cmd.Run()
5979
output = bytes.TrimSpace(sout.Bytes())
6080
stderr := bytes.TrimSpace(serr.Bytes())
@@ -63,13 +83,6 @@ func (dg DefaultGitter) Exec(args ...string) (output []byte, err error) {
6383
} else {
6484
output = append(output, stderr...)
6585
}
66-
if dg.DebugOut != nil {
67-
result := "OK"
68-
if err != nil {
69-
result = err.Error()
70-
}
71-
fmt.Fprintf(dg.DebugOut, "%q => (%v+%v) %v\n", strings.Join(cmd.Args, " "), len(output), len(stderr), result)
72-
}
7386
return
7487
}
7588

pkg/gitter_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,13 @@ func Test_DefaultGitter_GetBuild(t *testing.T) {
203203
}
204204
}
205205

206+
func Test_maybeSync(t *testing.T) {
207+
if f, err := os.CreateTemp("", ""); err == nil {
208+
defer os.Remove(f.Name())
209+
gitsemver.MaybeSync(f)
210+
}
211+
}
212+
206213
func Test_DefaultGitter_FetchTags(t *testing.T) {
207214
dg, err := gitsemver.NewDefaultGitter("git", nil)
208215
if err != nil {

0 commit comments

Comments
 (0)