aboutsummaryrefslogtreecommitdiff
path: root/builder/builder2v2/build_creation_info.go
diff options
context:
space:
mode:
authorSteve Winslow <steve@swinslow.net>2020-06-14 15:28:11 -0400
committerSteve Winslow <steve@swinslow.net>2020-06-14 15:28:11 -0400
commitaa88812312f0f42b5e3646d5bab8e3144614557f (patch)
tree0dc989b906c652d2c50f66647507df6fe339bf8d /builder/builder2v2/build_creation_info.go
parent0545df6836f5ff6c31734849f7fcbf36c47a7189 (diff)
downloadspdx-tools-aa88812312f0f42b5e3646d5bab8e3144614557f.tar.gz
Add builder and tests for 2.2
Signed-off-by: Steve Winslow <steve@swinslow.net>
Diffstat (limited to 'builder/builder2v2/build_creation_info.go')
-rw-r--r--builder/builder2v2/build_creation_info.go59
1 files changed, 59 insertions, 0 deletions
diff --git a/builder/builder2v2/build_creation_info.go b/builder/builder2v2/build_creation_info.go
new file mode 100644
index 0000000..89e1b3c
--- /dev/null
+++ b/builder/builder2v2/build_creation_info.go
@@ -0,0 +1,59 @@
+// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
+
+package builder2v2
+
+import (
+ "fmt"
+ "time"
+
+ "github.com/spdx/tools-golang/spdx"
+)
+
+// BuildCreationInfoSection2_2 creates an SPDX Package (version 2.2), 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_2(packageName string, code string, namespacePrefix string, creatorType string, creator string, testValues map[string]string) (*spdx.CreationInfo2_2, 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_2{
+ SPDXVersion: "SPDX-2.2",
+ 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
+}