Render selected PromptKit report formats

This commit is contained in:
2026-10-09 01:24:51 +00:00
parent a431540e19
commit 628dc78083
2 changed files with 61 additions and 19 deletions

View File

@@ -1,10 +1,10 @@
package commandkit
import (
"bytes"
"context"
"errors"
"fmt"
"io"
"strconv"
"strings"
@@ -290,7 +290,17 @@ func runPromptKitPrompt[C any](invocation Invocation, suite PromptKitSuite[C], i
return promptKitFailure(fmt.Errorf("PromptKit prompt inspection returned no result"), acquired.Diagnostics)
}
report := promptReportFromInspection(acquired.Value)
return writePromptKitReport(invocation, input.Format, report, formatPromptText(report), acquired.Diagnostics)
var output []byte
if input.Format == "yaml" {
var buffer bytes.Buffer
if err := encodeYAML(&buffer, report); err != nil {
return promptKitFailure(err, acquired.Diagnostics)
}
output = buffer.Bytes()
} else {
output = []byte(formatPromptText(report))
}
return writePromptKitReport(invocation, output, acquired.Diagnostics)
}
func runPromptKitProfile[C any](invocation Invocation, suite PromptKitSuite[C], input promptKitInput[C]) Outcome {
@@ -312,11 +322,21 @@ func runPromptKitProfile[C any](invocation Invocation, suite PromptKitSuite[C],
return promptKitFailure(fmt.Errorf("PromptKit profile inspection returned no result"), acquired.Diagnostics)
}
report := profileReportFromInspection(acquired.Value)
textReport, err := formatProfileText(report)
if err != nil {
return promptKitFailure(err, acquired.Diagnostics)
var output []byte
if input.Format == "yaml" {
var buffer bytes.Buffer
if err := encodeYAML(&buffer, report); err != nil {
return promptKitFailure(err, acquired.Diagnostics)
}
output = buffer.Bytes()
} else {
textReport, err := formatProfileText(report)
if err != nil {
return promptKitFailure(err, acquired.Diagnostics)
}
output = []byte(textReport)
}
return writePromptKitReport(invocation, input.Format, report, textReport, acquired.Diagnostics)
return writePromptKitReport(invocation, output, acquired.Diagnostics)
}
func promptKitFailure(err error, diagnostics []Diagnostic) Outcome {
@@ -325,19 +345,11 @@ func promptKitFailure(err error, diagnostics []Diagnostic) Outcome {
return outcome
}
func writePromptKitReport(invocation Invocation, format string, report any, textReport string, diagnostics []Diagnostic) Outcome {
var output strings.Builder
if format == "yaml" {
if err := encodeYAML(&output, report); err != nil {
return promptKitFailure(err, diagnostics)
}
} else if _, err := io.WriteString(&output, textReport); err != nil {
return promptKitFailure(err, diagnostics)
}
func writePromptKitReport(invocation Invocation, output []byte, diagnostics []Diagnostic) Outcome {
if err := invocation.Context.Err(); err != nil {
return promptKitFailure(err, diagnostics)
}
if err := writeReport(invocation.Streams.Out, []byte(output.String())); err != nil {
if err := writeReport(invocation.Streams.Out, output); err != nil {
outcome := incompleteReport(err)
outcome.Diagnostics = diagnostics
return outcome