| // SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later |
| |
| package builder2v2 |
| |
| import ( |
| "fmt" |
| "path/filepath" |
| |
| "github.com/spdx/tools-golang/spdx/common" |
| "github.com/spdx/tools-golang/spdx/v2_2" |
| "github.com/spdx/tools-golang/utils" |
| ) |
| |
| // BuildFileSection2_2 creates an SPDX File (version 2.2), returning that |
| // file or error if any is encountered. Arguments: |
| // - filePath: path to file, relative to prefix |
| // - prefix: relative directory for filePath |
| // - fileNumber: integer index (unique within package) to use in identifier |
| func BuildFileSection2_2(filePath string, prefix string, fileNumber int) (*v2_2.File, error) { |
| // build the full file path |
| p := filepath.Join(prefix, filePath) |
| |
| // make sure we can get the file and its hashes |
| ssha1, ssha256, smd5, err := utils.GetHashesForFilePath(p) |
| if err != nil { |
| return nil, err |
| } |
| |
| // build the identifier |
| i := fmt.Sprintf("File%d", fileNumber) |
| |
| // now build the File section |
| f := &v2_2.File{ |
| FileName: filePath, |
| FileSPDXIdentifier: common.ElementID(i), |
| Checksums: []common.Checksum{ |
| { |
| Algorithm: common.SHA1, |
| Value: ssha1, |
| }, |
| { |
| Algorithm: common.SHA256, |
| Value: ssha256, |
| }, |
| { |
| Algorithm: common.MD5, |
| Value: smd5, |
| }, |
| }, |
| LicenseConcluded: "NOASSERTION", |
| LicenseInfoInFiles: []string{"NOASSERTION"}, |
| FileCopyrightText: "NOASSERTION", |
| } |
| |
| return f, nil |
| } |