1*ba677afaSXin LiSPDX-License-Identifier: CC-BY-4.0 2*ba677afaSXin Li 3*ba677afaSXin Li# tools-golang Examples 4*ba677afaSXin Li 5*ba677afaSXin LiThe `examples/` directory contains examples for how to use the various 6*ba677afaSXin Litools-golang sub-packages. Sample commands below should be run from 7*ba677afaSXin Liwithin the example's subdirectory. 8*ba677afaSXin Li 9*ba677afaSXin Li## 1-load/ 10*ba677afaSXin Li 11*ba677afaSXin Li*tvloader*, *spdx* 12*ba677afaSXin Li 13*ba677afaSXin LiThis example demonstrates loading an SPDX tag-value file from disk into memory, 14*ba677afaSXin Liand printing some of its contents to standard output. 15*ba677afaSXin Li#### Run project: *go run example_load.go ../sample-docs/tv/hello.spdx* 16*ba677afaSXin Li 17*ba677afaSXin Li## 2-load-save/ 18*ba677afaSXin Li 19*ba677afaSXin Li*tvloader*, *tvsaver* 20*ba677afaSXin Li 21*ba677afaSXin LiThis example demonstrates loading an SPDX tag-value file from disk into memory, 22*ba677afaSXin Liand re-saving it to a different file on disk. 23*ba677afaSXin Li#### Run project: *go run example_load_save.go ../sample-docs/tv/hello.spdx test.spdx* 24*ba677afaSXin Li 25*ba677afaSXin Li## 3-build/ 26*ba677afaSXin Li 27*ba677afaSXin Li*builder*, *tvsaver* 28*ba677afaSXin Li 29*ba677afaSXin LiThis example demonstrates building an 'empty' SPDX document in memory that 30*ba677afaSXin Licorresponds to a given directory's contents, including all files with their 31*ba677afaSXin Lihashes and the package's verification code, and saving the document to disk. 32*ba677afaSXin Li#### Run project: *go run example_build.go project2 ../../testdata/project2 test.spdx* 33*ba677afaSXin Li 34*ba677afaSXin Li## 4-search/ 35*ba677afaSXin Li 36*ba677afaSXin Li*idsearcher*, *tvsaver* 37*ba677afaSXin Li 38*ba677afaSXin LiThis example demonstrates building an SPDX document for a directory's contents 39*ba677afaSXin Li(implicitly using *builder*); searching through that directory for [SPDX 40*ba677afaSXin Lishort-form IDs](https://spdx.org/ids/); filling those IDs into the document's 41*ba677afaSXin LiPackage and File license fields; and saving the resulting document to disk. 42*ba677afaSXin Li#### Run project: *go run example_search.go project2 ../../testdata/project2/folder test.spdx* 43*ba677afaSXin Li 44*ba677afaSXin Li## 5-report/ 45*ba677afaSXin Li 46*ba677afaSXin Li*reporter*, *tvloader* 47*ba677afaSXin Li 48*ba677afaSXin LiThis example demonstrates loading an SPDX tag-value file from disk into memory, 49*ba677afaSXin Ligenerating a basic report listing counts of the concluded licenses for its 50*ba677afaSXin Lifiles, and printing the report to standard output. 51*ba677afaSXin Li#### Run project: *go run example_report.go ../sample-docs/tv/hello.spdx* 52*ba677afaSXin Li 53*ba677afaSXin Li## 6-licensediff 54*ba677afaSXin Li 55*ba677afaSXin Li*licensediff*, *tvloader* 56*ba677afaSXin Li 57*ba677afaSXin LiThis example demonstrates loading two SPDX tag-value files from disk into 58*ba677afaSXin Limemory, and generating a diff of the concluded licenses for Files in Packages 59*ba677afaSXin Liwith matching IDs in each document. 60*ba677afaSXin Li 61*ba677afaSXin LiThis is generally only useful when run with two SPDX documents that describe 62*ba677afaSXin Lilicenses for subsequent versions of the same set of files, AND if they have 63*ba677afaSXin Lithe same identifier in both documents. 64*ba677afaSXin Li#### Run project: *go run example_licensediff.go ../sample-docs/tv/hello.spdx ../sample-docs/tv/hello-modified.spdx* 65*ba677afaSXin Li 66*ba677afaSXin Li## 7-rdfloader 67*ba677afaSXin Li 68*ba677afaSXin Li*rdfloader*, *spdx* 69*ba677afaSXin Li 70*ba677afaSXin LiThis example demonstrates loading an SPDX rdf file from disk into memory 71*ba677afaSXin Liand then printing the corresponding spdx struct for the document. 72*ba677afaSXin Li#### Run project: *go run exampleRDFLoader.go ../sample-docs/rdf/SPDXRdfExample-v2.2.spdx.rdf* 73*ba677afaSXin Li 74*ba677afaSXin Li## 8-jsontotv 75*ba677afaSXin Li 76*ba677afaSXin Li*json*, *tvsaver* 77*ba677afaSXin Li 78*ba677afaSXin LiThis example demonstrates loading an SPDX json from disk into memory 79*ba677afaSXin Liand then re-saving it to a different file on disk in tag-value format. 80*ba677afaSXin Li#### Run project: *go run examplejsontotv.go ../sample-docs/json/SPDXJSONExample-v2.2.spdx.json example.spdx* 81*ba677afaSXin Li 82*ba677afaSXin Li## 9-tvtojson 83*ba677afaSXin Li 84*ba677afaSXin Li*json*, *tvloader* 85*ba677afaSXin Li 86*ba677afaSXin LiThis example demonstrates loading an SPDX tag-value from disk into memory 87*ba677afaSXin Liand then re-saving it to a different file on disk in json format. 88*ba677afaSXin Li#### Run project: *go run exampletvtojson.go ../sample-docs/tv/hello.spdx example.json* 89*ba677afaSXin Li 90*ba677afaSXin Li## 10-jsonloader 91*ba677afaSXin Li 92*ba677afaSXin Li*json* 93*ba677afaSXin Li 94*ba677afaSXin LiThis example demonstrates loading an SPDX json from disk into memory 95*ba677afaSXin Liand then logging some of the attributes to the console. 96*ba677afaSXin Li#### Run project: *go run example_json_loader.go ../sample-docs/json/SPDXJSONExample-v2.2.spdx.json* 97*ba677afaSXin Li 98*ba677afaSXin Li## 11-yamltotv 99*ba677afaSXin Li 100*ba677afaSXin Li*yaml* *tvsaver* 101*ba677afaSXin Li 102*ba677afaSXin LiThis example demonstrates loading an SPDX yaml from disk into memory 103*ba677afaSXin Liand then re-saving it to a different file on disk in tag-value format. 104*ba677afaSXin Li#### Run project: *go run exampleyamltotv.go ../sample-docs/yaml/SPDXYAMLExample-2.2.spdx.yaml test.spdx* 105*ba677afaSXin Li 106*ba677afaSXin Li## 12-tvtoyaml 107*ba677afaSXin Li 108*ba677afaSXin Li*yaml* *tvloader* 109*ba677afaSXin Li 110*ba677afaSXin LiThis example demonstrates loading an SPDX tag-value from disk into memory 111*ba677afaSXin Liand then re-saving it to a different file on disk in yaml format. 112*ba677afaSXin Li#### Run project: *go run exampletvtoyaml.go ../sample-docs/tv/hello.spdx example.yaml* 113*ba677afaSXin Li 114*ba677afaSXin Li## 13-yamlloader 115*ba677afaSXin Li 116*ba677afaSXin Li*yaml* 117*ba677afaSXin Li 118*ba677afaSXin LiThis example demonstrates loading an SPDX yaml from disk into memory 119*ba677afaSXin Liand then logging some of the attributes to the console. 120*ba677afaSXin Li#### Run project: *go run exampleYAMLLoader.go ../sample-docs/yaml/SPDXYAMLExample-2.2.spdx.yaml* 121