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