fix: improve error messages for flake metadata command

Capture stderr from nix flake metadata to show the actual error
message instead of just "exit status 1".

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-06 23:21:52 +01:00
parent 883ec25a62
commit a065eab759

View File

@@ -3,6 +3,7 @@ package collector
import (
"context"
"encoding/json"
"fmt"
"log/slog"
"os"
"os/exec"
@@ -189,12 +190,15 @@ func fetchFlakeMetadata(flakeURL string) (*flakeMetadata, error) {
cmd := exec.CommandContext(ctx, "nix", "flake", "metadata", "--json", flakeURL)
output, err := cmd.Output()
if err != nil {
return nil, err
if exitErr, ok := err.(*exec.ExitError); ok {
return nil, fmt.Errorf("nix flake metadata failed: %s", string(exitErr.Stderr))
}
return nil, fmt.Errorf("nix flake metadata failed: %w", err)
}
var data flakeMetadata
if err := json.Unmarshal(output, &data); err != nil {
return nil, err
return nil, fmt.Errorf("failed to parse flake metadata: %w", err)
}
return &data, nil