Skip to content

Commit 4b6209e

Browse files
chore: listen to feedback
1 parent e12ccc7 commit 4b6209e

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

agent/agentcontainers/devcontainercli.go

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,8 @@ func (d *devcontainerCLI) Up(ctx context.Context, workspaceFolder, configPath st
196196
cmd.Stderr = io.MultiWriter(stderrWriters...)
197197

198198
if err := cmd.Run(); err != nil {
199-
var result devcontainerCLIResult
200-
if err2 := parseDevcontainerCLILastLine(ctx, logger, stdoutBuf.Bytes(), &result); err2 != nil {
199+
result, err2 := parseDevcontainerCLILastLine[devcontainerCLIResult](ctx, logger, stdoutBuf.Bytes())
200+
if err2 != nil {
201201
err = errors.Join(err, err2)
202202
}
203203
if err2 := result.Err(); err2 != nil {
@@ -206,8 +206,8 @@ func (d *devcontainerCLI) Up(ctx context.Context, workspaceFolder, configPath st
206206
return "", err
207207
}
208208

209-
var result devcontainerCLIResult
210-
if err := parseDevcontainerCLILastLine(ctx, logger, stdoutBuf.Bytes(), &result); err != nil {
209+
result, err := parseDevcontainerCLILastLine[devcontainerCLIResult](ctx, logger, stdoutBuf.Bytes())
210+
if err != nil {
211211
return "", err
212212
}
213213
if err := result.Err(); err != nil {
@@ -286,8 +286,8 @@ func (d *devcontainerCLI) ReadConfig(ctx context.Context, workspaceFolder, confi
286286
return DevcontainerConfig{}, xerrors.Errorf("devcontainer read-configuration failed: %w", err)
287287
}
288288

289-
var config DevcontainerConfig
290-
if err := parseDevcontainerCLILastLine(ctx, logger, stdoutBuf.Bytes(), &config); err != nil {
289+
config, err := parseDevcontainerCLILastLine[DevcontainerConfig](ctx, logger, stdoutBuf.Bytes())
290+
if err != nil {
291291
return DevcontainerConfig{}, err
292292
}
293293

@@ -296,7 +296,9 @@ func (d *devcontainerCLI) ReadConfig(ctx context.Context, workspaceFolder, confi
296296

297297
// parseDevcontainerCLILastLine parses the last line of the devcontainer CLI output
298298
// which is a JSON object.
299-
func parseDevcontainerCLILastLine[T any](ctx context.Context, logger slog.Logger, p []byte, result T) error {
299+
func parseDevcontainerCLILastLine[T any](ctx context.Context, logger slog.Logger, p []byte) (T, error) {
300+
var result T
301+
300302
s := bufio.NewScanner(bytes.NewReader(p))
301303
var lastLine []byte
302304
for s.Scan() {
@@ -307,18 +309,18 @@ func parseDevcontainerCLILastLine[T any](ctx context.Context, logger slog.Logger
307309
lastLine = b
308310
}
309311
if err := s.Err(); err != nil {
310-
return err
312+
return result, err
311313
}
312314
if len(lastLine) == 0 || lastLine[0] != '{' {
313315
logger.Error(ctx, "devcontainer result is not json", slog.F("result", string(lastLine)))
314-
return xerrors.Errorf("devcontainer result is not json: %q", string(lastLine))
316+
return result, xerrors.Errorf("devcontainer result is not json: %q", string(lastLine))
315317
}
316318
if err := json.Unmarshal(lastLine, &result); err != nil {
317319
logger.Error(ctx, "parse devcontainer result failed", slog.Error(err), slog.F("result", string(lastLine)))
318-
return err
320+
return result, err
319321
}
320322

321-
return nil
323+
return result, nil
322324
}
323325

324326
// devcontainerCLIResult is the result of the devcontainer CLI command.

0 commit comments

Comments
 (0)