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