1*ba677afaSXin Li// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 2*ba677afaSXin Li 3*ba677afaSXin Li// Example for: *json* 4*ba677afaSXin Li 5*ba677afaSXin Li// This example demonstrates loading an SPDX JSON document from disk into memory, 6*ba677afaSXin Li// and then logging some attributes to the console. 7*ba677afaSXin Li// Run project: go run example_json_loader.go ../sample-docs/json/SPDXJSONExample-v2.2.spdx.json 8*ba677afaSXin Lipackage main 9*ba677afaSXin Li 10*ba677afaSXin Liimport ( 11*ba677afaSXin Li "fmt" 12*ba677afaSXin Li "os" 13*ba677afaSXin Li "strings" 14*ba677afaSXin Li 15*ba677afaSXin Li spdx_json "github.com/spdx/tools-golang/json" 16*ba677afaSXin Li) 17*ba677afaSXin Li 18*ba677afaSXin Lifunc main() { 19*ba677afaSXin Li 20*ba677afaSXin Li // check that we've received the right number of arguments 21*ba677afaSXin Li args := os.Args 22*ba677afaSXin Li if len(args) != 2 { 23*ba677afaSXin Li fmt.Printf("Usage: %v <json-file-in>\n", args[0]) 24*ba677afaSXin Li fmt.Printf(" Load SPDX 2.2 JSON file <spdx-file-in>, and\n") 25*ba677afaSXin Li fmt.Printf(" print portions of its creation info data.\n") 26*ba677afaSXin Li return 27*ba677afaSXin Li } 28*ba677afaSXin Li 29*ba677afaSXin Li // open the SPDX file 30*ba677afaSXin Li fileIn := args[1] 31*ba677afaSXin Li r, err := os.Open(fileIn) 32*ba677afaSXin Li if err != nil { 33*ba677afaSXin Li fmt.Printf("Error while opening %v for reading: %v", fileIn, err) 34*ba677afaSXin Li return 35*ba677afaSXin Li } 36*ba677afaSXin Li defer r.Close() 37*ba677afaSXin Li 38*ba677afaSXin Li // try to load the SPDX file's contents as a json file, version 2.2 39*ba677afaSXin Li doc, err := spdx_json.Load2_2(r) 40*ba677afaSXin Li if err != nil { 41*ba677afaSXin Li fmt.Printf("Error while parsing %v: %v", args[1], err) 42*ba677afaSXin Li return 43*ba677afaSXin Li } 44*ba677afaSXin Li 45*ba677afaSXin Li // if we got here, the file is now loaded into memory. 46*ba677afaSXin Li fmt.Printf("Successfully loaded %s\n", args[1]) 47*ba677afaSXin Li 48*ba677afaSXin Li fmt.Println(strings.Repeat("=", 80)) 49*ba677afaSXin Li fmt.Println("Some Attributes of the Document:") 50*ba677afaSXin Li fmt.Printf("Document Name: %s\n", doc.DocumentName) 51*ba677afaSXin Li fmt.Printf("DataLicense: %s\n", doc.DataLicense) 52*ba677afaSXin Li fmt.Printf("Document Namespace: %s\n", doc.DocumentNamespace) 53*ba677afaSXin Li fmt.Printf("SPDX Version: %s\n", doc.SPDXVersion) 54*ba677afaSXin Li fmt.Println(strings.Repeat("=", 80)) 55*ba677afaSXin Li} 56