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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy