|
1 | | -package csv |
| 1 | +package scanformat |
2 | 2 |
|
3 | 3 | import ( |
4 | 4 | "bytes" |
5 | 5 | "encoding/csv" |
6 | 6 | "fmt" |
| 7 | + "io" |
7 | 8 | "strconv" |
8 | 9 |
|
9 | 10 | guardrailsclient "github.com/guardrailsio/guardrails-cli/internal/client/guardrails" |
10 | 11 | ) |
11 | 12 |
|
12 | | -func ScanResult(result *guardrailsclient.GetScanDataResp) error { |
| 13 | +// GetScanDataCSVFormat parses guardrailsclient.GetScanDataResp to csv format. |
| 14 | +func GetScanDataCSVFormat(w io.Writer, resp *guardrailsclient.GetScanDataResp) error { |
13 | 15 | var b []byte |
14 | 16 | buf := bytes.NewBuffer(b) |
15 | | - w := csv.NewWriter(buf) |
| 17 | + csvWriter := csv.NewWriter(buf) |
16 | 18 |
|
17 | 19 | header := []string{"rule_id", "rule_title", "total", "finding_id", "path", "line_number", "docs"} |
18 | | - if err := w.Write(header); err != nil { |
| 20 | + if err := csvWriter.Write(header); err != nil { |
19 | 21 | return err |
20 | 22 | } |
21 | 23 |
|
22 | | - for _, r := range result.Results.Rules { |
| 24 | + for _, r := range resp.Results.Rules { |
23 | 25 | for _, v := range r.Vulnerabilities { |
24 | 26 | ruleID := strconv.FormatInt(r.Rule.RuleID, 10) |
25 | 27 | total := strconv.Itoa(r.Count.Total) |
26 | 28 | lineNumber := strconv.FormatInt(v.LineNumber, 10) |
27 | 29 | docs := fmt.Sprintf("https://docs.guardrails.io/docs/vulnerabilities/%s/%s", v.Language, r.Rule.Docs) |
28 | 30 |
|
29 | 31 | record := []string{ruleID, r.Rule.Title, total, v.FindingID, v.Path, lineNumber, docs} |
30 | | - if err := w.Write(record); err != nil { |
| 32 | + if err := csvWriter.Write(record); err != nil { |
31 | 33 | return err |
32 | 34 | } |
33 | 35 | } |
34 | 36 | } |
35 | 37 |
|
36 | | - w.Flush() |
37 | | - if err := w.Error(); err != nil { |
| 38 | + csvWriter.Flush() |
| 39 | + if err := csvWriter.Error(); err != nil { |
38 | 40 | return err |
39 | 41 | } |
40 | 42 |
|
41 | | - fmt.Printf("%s", buf.String()) |
| 43 | + fmt.Fprintf(w, "%s", buf.String()) |
42 | 44 |
|
43 | 45 | return nil |
44 | 46 | } |
0 commit comments