func storeCredScanErrors()

in commands/credential_scan.go [399:440]


func storeCredScanErrors(wd string, credScanErrors []CredScanError) {
	reportDir := fmt.Sprintf("armstrong_credscan_%s", time.Now().Format(time.Stamp))
	reportDir = strings.ReplaceAll(reportDir, ":", "")
	reportDir = strings.ReplaceAll(reportDir, " ", "_")
	reportDir = path.Join(wd, reportDir)

	err := os.Mkdir(reportDir, 0755)
	if err != nil {
		logrus.Fatalf("error creating report dir %s: %+v", reportDir, err)
	}

	markdownFileName := "errors.md"
	credScanErrorsMarkdown := `
| File Name | Line Number | Name | Type | Property Name | Error Message |
| --- | --- | --- | --- | --- | --- |
`
	for _, r := range credScanErrors {
		credScanErrorsMarkdown += fmt.Sprintf("| %s | %d | %s | %s | %s | %s |\n", r.FileName, r.LineNumber, r.Name, r.Type, r.PropertyName, r.ErrorMessage)
	}

	markdownFileName = path.Join(reportDir, markdownFileName)
	err = os.WriteFile(markdownFileName, []byte(credScanErrorsMarkdown), 0644)
	if err != nil {
		logrus.Errorf("failed to save markdown report to %s: %+v", markdownFileName, err)
	} else {
		logrus.Infof("markdown report saved to %s", markdownFileName)
	}

	jsonFileName := "errors.json"
	jsonContent, err := json.MarshalIndent(credScanErrors, "", "  ")
	if err != nil {
		logrus.Errorf("failed to marshal json content %+v: %+v", credScanErrors, err)
	}

	jsonFileName = path.Join(reportDir, jsonFileName)
	err = os.WriteFile(jsonFileName, jsonContent, 0644)
	if err != nil {
		logrus.Errorf("failed to save json report to %s: %+v", jsonFileName, err)
	} else {
		logrus.Infof("json report saved to %s", jsonFileName)
	}
}