xref: /aosp_15_r20/external/spdx-tools/builder/builder2v1/build_creation_info.go (revision ba677afa8f67bb56cbc794f4d0e378e0da058e16)
1*ba677afaSXin Li// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
2*ba677afaSXin Li
3*ba677afaSXin Lipackage builder2v1
4*ba677afaSXin Li
5*ba677afaSXin Liimport (
6*ba677afaSXin Li	"time"
7*ba677afaSXin Li
8*ba677afaSXin Li	"github.com/spdx/tools-golang/spdx/common"
9*ba677afaSXin Li	"github.com/spdx/tools-golang/spdx/v2_1"
10*ba677afaSXin Li)
11*ba677afaSXin Li
12*ba677afaSXin Li// BuildCreationInfoSection2_1 creates an SPDX Package (version 2.1), returning that
13*ba677afaSXin Li// package or error if any is encountered. Arguments:
14*ba677afaSXin Li//   - creatorType: one of Person, Organization or Tool
15*ba677afaSXin Li//   - creator: creator string
16*ba677afaSXin Li//   - testValues: for testing only; call with nil when using in production
17*ba677afaSXin Lifunc BuildCreationInfoSection2_1(creatorType string, creator string, testValues map[string]string) (*v2_1.CreationInfo, error) {
18*ba677afaSXin Li	// build creator slices
19*ba677afaSXin Li	creators := []common.Creator{
20*ba677afaSXin Li		// add builder as a tool
21*ba677afaSXin Li		{
22*ba677afaSXin Li			Creator:     "github.com/spdx/tools-golang/builder",
23*ba677afaSXin Li			CreatorType: "Tool",
24*ba677afaSXin Li		},
25*ba677afaSXin Li		{
26*ba677afaSXin Li			Creator:     creator,
27*ba677afaSXin Li			CreatorType: creatorType,
28*ba677afaSXin Li		},
29*ba677afaSXin Li	}
30*ba677afaSXin Li
31*ba677afaSXin Li	// use test Created time if passing test values
32*ba677afaSXin Li	location, _ := time.LoadLocation("UTC")
33*ba677afaSXin Li	locationTime := time.Now().In(location)
34*ba677afaSXin Li	created := locationTime.Format("2006-01-02T15:04:05Z")
35*ba677afaSXin Li	if testVal := testValues["Created"]; testVal != "" {
36*ba677afaSXin Li		created = testVal
37*ba677afaSXin Li	}
38*ba677afaSXin Li
39*ba677afaSXin Li	ci := &v2_1.CreationInfo{
40*ba677afaSXin Li		Creators: creators,
41*ba677afaSXin Li		Created:  created,
42*ba677afaSXin Li	}
43*ba677afaSXin Li	return ci, nil
44*ba677afaSXin Li}
45