aboutsummaryrefslogtreecommitdiff
path: root/report.go
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2026-01-10 18:20:52 +0700
committerShulhan <ms@kilabit.info>2026-01-10 18:20:52 +0700
commit187cf1cb9cc684f3860426be86e9c682aa6c849f (patch)
tree95bb19caf30f9685916c453dcff4e4c0297a3fbf /report.go
parent6b1ee0dbb0e0801afbf98199e0ca0dd5b2dbe3cb (diff)
downloadspdxconv-187cf1cb9cc684f3860426be86e9c682aa6c849f.tar.xz
report: store the index line number and comments in report
For the index line number, instead of tied to license_id and copyright_id value (separated by ":"), store it in separate column as idx_license_id and idx_copyright_id. For comments, store the prefix and suffix at column 6 and 7 in CSV line.
Diffstat (limited to 'report.go')
-rw-r--r--report.go61
1 files changed, 36 insertions, 25 deletions
diff --git a/report.go b/report.go
index eb68b6c..6ec3f7f 100644
--- a/report.go
+++ b/report.go
@@ -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