Skip to content

Commit b0505a4

Browse files
authored
Fix displaying of errors in 'src batch validate' (#620)
Before this 'src batch validate' would... 1. not print an error if talking to the Sourcegraph instance failed 2. not unpack multi errors correctly and printing all of them This fixes both issues.
1 parent 157a86d commit b0505a4

File tree

4 files changed

+17
-10
lines changed

4 files changed

+17
-10
lines changed

cmd/src/batch_common.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,9 @@ func executeBatchSpec(ctx context.Context, opts executeBatchSpecOpts) (err error
229229
opts.ui.ParsingBatchSpec()
230230
batchSpec, rawSpec, err := parseBatchSpec(&opts.flags.file, svc)
231231
if err != nil {
232-
if merr, ok := err.(*multierror.Error); ok {
233-
opts.ui.ParsingBatchSpecFailure(merr)
232+
var multiErr *multierror.Error
233+
if errors.As(err, &multiErr) {
234+
opts.ui.ParsingBatchSpecFailure(multiErr)
234235
return cmderrors.ExitCode(2, nil)
235236
} else {
236237
// This shouldn't happen; let's just punt and let the normal

cmd/src/batch_exec.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,9 @@ func executeBatchSpecInWorkspaces(ctx context.Context, opts executeBatchSpecOpts
112112
opts.ui.ParsingBatchSpec()
113113
batchSpec, err := svc.ParseBatchSpec([]byte(input.RawSpec))
114114
if err != nil {
115-
if merr, ok := err.(*multierror.Error); ok {
116-
opts.ui.ParsingBatchSpecFailure(merr)
115+
var multiErr *multierror.Error
116+
if errors.As(err, &multiErr) {
117+
opts.ui.ParsingBatchSpecFailure(multiErr)
117118
return cmderrors.ExitCode(2, nil)
118119
} else {
119120
// This shouldn't happen; let's just punt and let the normal

cmd/src/batch_validate.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,19 @@ Examples:
4141
return cmderrors.Usage("additional arguments not allowed")
4242
}
4343

44+
out := output.NewOutput(flagSet.Output(), output.OutputOpts{Verbose: *verbose})
45+
ui := &ui.TUI{Out: out}
4446
svc := service.New(&service.Opts{
4547
Client: cfg.apiClient(apiFlags, flagSet.Output()),
4648
})
4749

4850
if err := svc.DetermineFeatureFlags(ctx); err != nil {
51+
ui.ExecutionError(err)
4952
return err
5053
}
5154

52-
out := output.NewOutput(flagSet.Output(), output.OutputOpts{Verbose: *verbose})
5355
if _, _, err := parseBatchSpec(fileFlag, svc); err != nil {
54-
(&ui.TUI{Out: out}).ParsingBatchSpecFailure(err)
56+
ui.ParsingBatchSpecFailure(err)
5557
return err
5658
}
5759

internal/batches/ui/tui.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,16 @@ func (ui *TUI) ParsingBatchSpecSuccess() {
4343
}
4444

4545
func (ui *TUI) ParsingBatchSpecFailure(err error) {
46-
if merr, ok := err.(*multierror.Error); ok {
47-
block := ui.Out.Block(output.Line("\u274c", output.StyleWarning, "Batch spec failed validation."))
48-
defer block.Close()
46+
block := ui.Out.Block(output.Line("\u274c", output.StyleWarning, "Batch spec failed validation."))
47+
defer block.Close()
4948

50-
for i, err := range merr.Errors {
49+
var multiErr *multierror.Error
50+
if errors.As(err, &multiErr) {
51+
for i, err := range multiErr.Errors {
5152
block.Writef("%d. %s", i+1, err)
5253
}
54+
} else {
55+
block.Writef("1. %s", err)
5356
}
5457
}
5558

0 commit comments

Comments
 (0)