xref: /aosp_15_r20/external/spdx-tools/tvloader/tvloader.go (revision ba677afa8f67bb56cbc794f4d0e378e0da058e16)
1*ba677afaSXin Li// Package tvloader is used to load and parse SPDX tag-value documents
2*ba677afaSXin Li// into tools-golang data structures.
3*ba677afaSXin Li// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
4*ba677afaSXin Lipackage tvloader
5*ba677afaSXin Li
6*ba677afaSXin Liimport (
7*ba677afaSXin Li	"github.com/spdx/tools-golang/spdx/v2_3"
8*ba677afaSXin Li	"github.com/spdx/tools-golang/tvloader/parser2v3"
9*ba677afaSXin Li	"io"
10*ba677afaSXin Li
11*ba677afaSXin Li	"github.com/spdx/tools-golang/spdx/v2_1"
12*ba677afaSXin Li	"github.com/spdx/tools-golang/spdx/v2_2"
13*ba677afaSXin Li	"github.com/spdx/tools-golang/tvloader/parser2v1"
14*ba677afaSXin Li	"github.com/spdx/tools-golang/tvloader/parser2v2"
15*ba677afaSXin Li	"github.com/spdx/tools-golang/tvloader/reader"
16*ba677afaSXin Li)
17*ba677afaSXin Li
18*ba677afaSXin Li// Load2_1 takes an io.Reader and returns a fully-parsed SPDX Document
19*ba677afaSXin Li// (version 2.1) if parseable, or error if any error is encountered.
20*ba677afaSXin Lifunc Load2_1(content io.Reader) (*v2_1.Document, error) {
21*ba677afaSXin Li	tvPairs, err := reader.ReadTagValues(content)
22*ba677afaSXin Li	if err != nil {
23*ba677afaSXin Li		return nil, err
24*ba677afaSXin Li	}
25*ba677afaSXin Li
26*ba677afaSXin Li	doc, err := parser2v1.ParseTagValues(tvPairs)
27*ba677afaSXin Li	if err != nil {
28*ba677afaSXin Li		return nil, err
29*ba677afaSXin Li	}
30*ba677afaSXin Li
31*ba677afaSXin Li	return doc, nil
32*ba677afaSXin Li}
33*ba677afaSXin Li
34*ba677afaSXin Li// Load2_2 takes an io.Reader and returns a fully-parsed SPDX Document
35*ba677afaSXin Li// (version 2.2) if parseable, or error if any error is encountered.
36*ba677afaSXin Lifunc Load2_2(content io.Reader) (*v2_2.Document, error) {
37*ba677afaSXin Li	tvPairs, err := reader.ReadTagValues(content)
38*ba677afaSXin Li	if err != nil {
39*ba677afaSXin Li		return nil, err
40*ba677afaSXin Li	}
41*ba677afaSXin Li
42*ba677afaSXin Li	doc, err := parser2v2.ParseTagValues(tvPairs)
43*ba677afaSXin Li	if err != nil {
44*ba677afaSXin Li		return nil, err
45*ba677afaSXin Li	}
46*ba677afaSXin Li
47*ba677afaSXin Li	return doc, nil
48*ba677afaSXin Li}
49*ba677afaSXin Li
50*ba677afaSXin Li// Load2_3 takes an io.Reader and returns a fully-parsed SPDX Document
51*ba677afaSXin Li// (version 2.2) if parseable, or error if any error is encountered.
52*ba677afaSXin Lifunc Load2_3(content io.Reader) (*v2_3.Document, error) {
53*ba677afaSXin Li	tvPairs, err := reader.ReadTagValues(content)
54*ba677afaSXin Li	if err != nil {
55*ba677afaSXin Li		return nil, err
56*ba677afaSXin Li	}
57*ba677afaSXin Li
58*ba677afaSXin Li	doc, err := parser2v3.ParseTagValues(tvPairs)
59*ba677afaSXin Li	if err != nil {
60*ba677afaSXin Li		return nil, err
61*ba677afaSXin Li	}
62*ba677afaSXin Li
63*ba677afaSXin Li	return doc, nil
64*ba677afaSXin Li}
65