diff options
Diffstat (limited to 'report.go')
| -rw-r--r-- | report.go | 61 |
1 files changed, 36 insertions, 25 deletions
@@ -26,7 +26,8 @@ const ( reportGroupUnknown = `unknown` ) -const v1FieldsPerRecord = 4 +// v1FieldsPerRecord fixed number of columns in report. +const v1FieldsPerRecord = 8 type report struct { listRegular []*file @@ -52,7 +53,6 @@ func loadReport() (rep *report, err error) { rep = &report{} var group string var record []string - var fields []string var f *file var n int @@ -74,31 +74,29 @@ func loadReport() (rep *report, err error) { f = &file{ path: record[0], - copyrightYear: record[2], + licenseID: record[1], + copyrightYear: record[3], + copyrightText: record[4], + commentPrefix: record[6], + commentSuffix: record[7], } - fields = strings.Split(record[1], `:`) - f.licenseID = fields[0] - if len(fields) == 2 && fields[0] == valExist { - f.idxLicenseID, err = strconv.Atoi(fields[1]) - if err != nil { - return nil, fmt.Errorf(`%s: line %d: %w`, logp, n, err) - } + f.idxLicenseID, err = strconv.Atoi(record[2]) + if err != nil { + return nil, fmt.Errorf(`%s: line %d: %w`, logp, n, err) } - fields = strings.Split(record[3], `:`) - f.copyrightText = fields[0] - if len(fields) == 2 && fields[0] == valExist { - f.idxCopyrightText, err = strconv.Atoi(fields[1]) - if err != nil { - return nil, fmt.Errorf(`%s: line %d: %w`, logp, n, err) - } + f.idxCopyrightText, err = strconv.Atoi(record[5]) + if err != nil { + return nil, fmt.Errorf(`%s: line %d: %w`, logp, n, err) } switch group { case reportGroupRegular: rep.listRegular = append(rep.listRegular, f) case reportGroupBinary: + f.isBinary = true rep.listBinary = append(rep.listBinary, f) case reportGroupUnknown: + f.isUnknown = true rep.listUnknown = append(rep.listUnknown, f) } next: @@ -138,17 +136,22 @@ func (rep *report) scan(conv *SPDXConv, listFile []string) (err error) { func (rep *report) write() (err error) { var buf bytes.Buffer buf.WriteString(reportMetaPrefix + "version:v1\n") - buf.WriteString(reportMetaPrefix + "header:path,license_id,year,copyright_id\n") + buf.WriteString(reportMetaPrefix + + "header:path,license_id,idx_license_id,year,copyright_id,idx_copyright_id\n") var csvw = csv.NewWriter(&buf) - var record = make([]string, 4) + var record = make([]string, v1FieldsPerRecord) buf.WriteString(reportMetaPrefix + reportGroupRegular + "\n") for _, file := range rep.listRegular { record[0] = file.path record[1] = file.licenseID - record[2] = file.copyrightYear - record[3] = file.copyrightText + record[2] = strconv.Itoa(file.idxLicenseID) + record[3] = file.copyrightYear + record[4] = file.copyrightText + record[5] = strconv.Itoa(file.idxCopyrightText) + record[6] = file.commentPrefix + record[7] = file.commentSuffix err = csvw.Write(record) if err != nil { return err @@ -160,8 +163,12 @@ func (rep *report) write() (err error) { for _, file := range rep.listBinary { record[0] = file.path record[1] = file.licenseID - record[2] = file.copyrightYear - record[3] = file.copyrightText + record[2] = strconv.Itoa(file.idxLicenseID) + record[3] = file.copyrightYear + record[4] = file.copyrightText + record[5] = strconv.Itoa(file.idxCopyrightText) + record[6] = file.commentPrefix + record[7] = file.commentSuffix err = csvw.Write(record) if err != nil { return err @@ -173,8 +180,12 @@ func (rep *report) write() (err error) { for _, file := range rep.listUnknown { record[0] = file.path record[1] = file.licenseID - record[2] = file.copyrightYear - record[3] = file.copyrightText + record[2] = strconv.Itoa(file.idxLicenseID) + record[3] = file.copyrightYear + record[4] = file.copyrightText + record[5] = strconv.Itoa(file.idxCopyrightText) + record[6] = file.commentPrefix + record[7] = file.commentSuffix err = csvw.Write(record) if err != nil { return err |
