| // SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later |
| |
| package builder2v1 |
| |
| import ( |
| "fmt" |
| "time" |
| |
| "github.com/spdx/tools-golang/spdx" |
| ) |
| |
| // BuildCreationInfoSection2_1 creates an SPDX Package (version 2.1), returning that |
| // package or error if any is encountered. Arguments: |
| // - packageName: name of package / directory |
| // - code: verification code from Package |
| // - namespacePrefix: prefix for DocumentNamespace (packageName and code will be added) |
| // - creatorType: one of Person, Organization or Tool |
| // - creator: creator string |
| // - testValues: for testing only; call with nil when using in production |
| func BuildCreationInfoSection2_1(packageName string, code string, namespacePrefix string, creatorType string, creator string, testValues map[string]string) (*spdx.CreationInfo2_1, error) { |
| // build creator slices |
| cPersons := []string{} |
| cOrganizations := []string{} |
| cTools := []string{} |
| // add builder as a tool |
| cTools = append(cTools, "github.com/spdx/tools-golang/builder") |
| |
| switch creatorType { |
| case "Person": |
| cPersons = append(cPersons, creator) |
| case "Organization": |
| cOrganizations = append(cOrganizations, creator) |
| case "Tool": |
| cTools = append(cTools, creator) |
| default: |
| cPersons = append(cPersons, creator) |
| } |
| |
| // use test Created time if passing test values |
| location, _ := time.LoadLocation("UTC") |
| locationTime := time.Now().In(location) |
| created := locationTime.Format("2006-01-02T15:04:05Z") |
| if testVal := testValues["Created"]; testVal != "" { |
| created = testVal |
| } |
| |
| ci := &spdx.CreationInfo2_1{ |
| SPDXVersion: "SPDX-2.1", |
| DataLicense: "CC0-1.0", |
| SPDXIdentifier: spdx.ElementID("DOCUMENT"), |
| DocumentName: packageName, |
| DocumentNamespace: fmt.Sprintf("%s%s-%s", namespacePrefix, packageName, code), |
| CreatorPersons: cPersons, |
| CreatorOrganizations: cOrganizations, |
| CreatorTools: cTools, |
| Created: created, |
| } |
| return ci, nil |
| } |