xref: /aosp_15_r20/external/spdx-tools/examples/README.md (revision ba677afa8f67bb56cbc794f4d0e378e0da058e16)
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