Skip to content

Commit bb0946f

Browse files
committed
fix(cli): dump stderr on help flags-as-proto failure (#1181)
Just in-case GitOrigin-RevId: 758bfac0fab55c48114dd01c0986eb6a46bd6c37
1 parent c0e3f99 commit bb0946f

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

pkg/bazel/bazel.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -162,13 +162,14 @@ func (b *bazel) Flags() (map[string]*flags.FlagInfo, error) {
162162
if allFlags != nil {
163163
return allFlags, nil
164164
}
165-
var buffer bytes.Buffer
165+
var stdout bytes.Buffer
166+
var stderr bytes.Buffer
166167
streams := ioutils.Streams{
167168
Stdin: os.Stdin,
168-
Stdout: &buffer,
169-
Stderr: nil,
169+
Stdout: &stdout,
170+
Stderr: &stderr,
170171
}
171-
decoder := base64.NewDecoder(base64.StdEncoding, &buffer)
172+
stdoutDecoder := base64.NewDecoder(base64.StdEncoding, &stdout)
172173
bazelErrs := make(chan error, 1)
173174
bazelExitCode := make(chan int, 1)
174175
defer close(bazelErrs)
@@ -183,21 +184,21 @@ func (b *bazel) Flags() (map[string]*flags.FlagInfo, error) {
183184
}()
184185

185186
if exitCode := <-bazelExitCode; exitCode != 0 {
186-
return nil, fmt.Errorf("failed to get Bazel flags: %w", fmt.Errorf("bazel has quit with code %d", exitCode))
187+
return nil, fmt.Errorf("failed to get bazel flags: %w", fmt.Errorf("bazel has quit with code %d\nstderr:\n%s", exitCode, stderr.String()))
187188
}
188189

189190
if err := <-bazelErrs; err != nil {
190-
return nil, fmt.Errorf("failed to get Bazel flags: %w", err)
191+
return nil, fmt.Errorf("failed to get bazel flags: %w", err)
191192
}
192193

193-
helpProtoBytes, err := io.ReadAll(decoder)
194+
helpProtoBytes, err := io.ReadAll(stdoutDecoder)
194195
if err != nil {
195-
return nil, fmt.Errorf("failed to get Bazel flags: %w", err)
196+
return nil, fmt.Errorf("failed to get bazel flags: %w", err)
196197
}
197198

198199
flagCollection := &flags.FlagCollection{}
199200
if err := proto.Unmarshal(helpProtoBytes, flagCollection); err != nil {
200-
return nil, fmt.Errorf("failed to get Bazel flags: %w", err)
201+
return nil, fmt.Errorf("failed to get bazel flags: %w", err)
201202
}
202203

203204
allFlags = make(map[string]*flags.FlagInfo)

0 commit comments

Comments
 (0)