aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/kcidb/client.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/kcidb/client.go')
-rw-r--r--pkg/kcidb/client.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/pkg/kcidb/client.go b/pkg/kcidb/client.go
index bba811c7e..091cbbefb 100644
--- a/pkg/kcidb/client.go
+++ b/pkg/kcidb/client.go
@@ -84,6 +84,24 @@ func (c *Client) Publish(bug *dashapi.BugReport) error {
return err
}
+func (c *Client) PublishToFile(bug *dashapi.BugReport, filename string) error {
+ target := targets.List[bug.OS][bug.VMArch]
+ if target == nil {
+ return fmt.Errorf("unsupported OS/arch %v/%v", bug.OS, bug.VMArch)
+ }
+ data, err := json.MarshalIndent(c.convert(target, bug), "", " ")
+ if err != nil {
+ return fmt.Errorf("failed to marshal kcidb json: %w", err)
+ }
+ if err := kcidbValidate(data); err != nil {
+ return err
+ }
+ if err := os.WriteFile(filename, data, 0644); err != nil {
+ return fmt.Errorf("failed to write kcidb json to file: %w", err)
+ }
+ return nil
+}
+
var Validate bool
func kcidbValidate(data []byte) error {