Skip to content

Commit 3c688bc

Browse files
authored
Add Software Bill of Materials View to Settings (#88)
1 parent be09088 commit 3c688bc

6 files changed

Lines changed: 5474 additions & 0 deletions

File tree

Sources/Showcase/Resources/Localizable.xcstrings

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -944,6 +944,9 @@
944944
},
945945
"BEST" : {
946946

947+
},
948+
"Bill of Materials" : {
949+
947950
},
948951
"Binding" : {
949952

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../sbom-darwin-ios.spdx.json
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../sbom-linux-android.spdx.json

Sources/Showcase/SettingsView.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ struct SettingsView: View {
1414
Text("Light").tag("light")
1515
Text("Dark").tag("dark")
1616
}
17+
NavigationLink("Bill of Materials") {
18+
SBOMView(bundle: .module)
19+
}
1720
NavigationLink("System Information") {
1821
let env = ProcessInfo.processInfo.environment
1922
List {

sbom-darwin-ios.spdx.json

Lines changed: 320 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,320 @@
1+
{
2+
"creationInfo" : {
3+
"created" : "2026-04-08T18:20:58Z",
4+
"creators" : [
5+
"Tool: skip-sbom"
6+
],
7+
"licenseListVersion" : "3.22"
8+
},
9+
"dataLicense" : "CC0-1.0",
10+
"documentNamespace" : "https://skip.dev/spdx/skipapp-showcase/ios",
11+
"name" : "skipapp-showcase-ios",
12+
"packages" : [
13+
{
14+
"downloadLocation" : "NOASSERTION",
15+
"filesAnalyzed" : false,
16+
"name" : "skipapp-showcase",
17+
"primaryPackagePurpose" : "APPLICATION",
18+
"SPDXID" : "SPDXRef-Package-skipapp-showcase",
19+
"supplier" : "NOASSERTION",
20+
"versionInfo" : "source"
21+
},
22+
{
23+
"copyrightText" : "NOASSERTION",
24+
"downloadLocation" : "https://github.com/airbnb/lottie-ios.git",
25+
"externalRefs" : [
26+
{
27+
"referenceCategory" : "PACKAGE-MANAGER",
28+
"referenceLocator" : "https://github.com/airbnb/lottie-ios.git",
29+
"referenceType" : "swiftpm"
30+
}
31+
],
32+
"filesAnalyzed" : false,
33+
"licenseConcluded" : "NOASSERTION",
34+
"licenseDeclared" : "NOASSERTION",
35+
"name" : "lottie-ios",
36+
"primaryPackagePurpose" : "LIBRARY",
37+
"SPDXID" : "SPDXRef-Package-lottie-ios",
38+
"supplier" : "NOASSERTION",
39+
"versionInfo" : "4.5.2"
40+
},
41+
{
42+
"copyrightText" : "NOASSERTION",
43+
"downloadLocation" : "https://source.skip.tools/skip.git",
44+
"externalRefs" : [
45+
{
46+
"referenceCategory" : "PACKAGE-MANAGER",
47+
"referenceLocator" : "https://source.skip.tools/skip.git",
48+
"referenceType" : "swiftpm"
49+
}
50+
],
51+
"filesAnalyzed" : false,
52+
"licenseConcluded" : "NOASSERTION",
53+
"licenseDeclared" : "NOASSERTION",
54+
"name" : "skip",
55+
"primaryPackagePurpose" : "LIBRARY",
56+
"SPDXID" : "SPDXRef-Package-skip",
57+
"supplier" : "NOASSERTION",
58+
"versionInfo" : "1.6.6"
59+
},
60+
{
61+
"copyrightText" : "NOASSERTION",
62+
"downloadLocation" : "https://source.skip.tools/skip-av.git",
63+
"externalRefs" : [
64+
{
65+
"referenceCategory" : "PACKAGE-MANAGER",
66+
"referenceLocator" : "https://source.skip.tools/skip-av.git",
67+
"referenceType" : "swiftpm"
68+
}
69+
],
70+
"filesAnalyzed" : false,
71+
"licenseConcluded" : "NOASSERTION",
72+
"licenseDeclared" : "NOASSERTION",
73+
"name" : "skip-av",
74+
"primaryPackagePurpose" : "LIBRARY",
75+
"SPDXID" : "SPDXRef-Package-skip-av",
76+
"supplier" : "NOASSERTION",
77+
"versionInfo" : "0.5.1"
78+
},
79+
{
80+
"copyrightText" : "NOASSERTION",
81+
"downloadLocation" : "https://source.skip.tools/skip-device.git",
82+
"externalRefs" : [
83+
{
84+
"referenceCategory" : "PACKAGE-MANAGER",
85+
"referenceLocator" : "https://source.skip.tools/skip-device.git",
86+
"referenceType" : "swiftpm"
87+
}
88+
],
89+
"filesAnalyzed" : false,
90+
"licenseConcluded" : "NOASSERTION",
91+
"licenseDeclared" : "NOASSERTION",
92+
"name" : "skip-device",
93+
"primaryPackagePurpose" : "LIBRARY",
94+
"SPDXID" : "SPDXRef-Package-skip-device",
95+
"supplier" : "NOASSERTION",
96+
"versionInfo" : "0.4.2"
97+
},
98+
{
99+
"copyrightText" : "NOASSERTION",
100+
"downloadLocation" : "https://source.skip.tools/skip-foundation.git",
101+
"externalRefs" : [
102+
{
103+
"referenceCategory" : "PACKAGE-MANAGER",
104+
"referenceLocator" : "https://source.skip.tools/skip-foundation.git",
105+
"referenceType" : "swiftpm"
106+
}
107+
],
108+
"filesAnalyzed" : false,
109+
"licenseConcluded" : "NOASSERTION",
110+
"licenseDeclared" : "NOASSERTION",
111+
"name" : "skip-foundation",
112+
"primaryPackagePurpose" : "LIBRARY",
113+
"SPDXID" : "SPDXRef-Package-skip-foundation",
114+
"supplier" : "NOASSERTION",
115+
"versionInfo" : "1.3.8"
116+
},
117+
{
118+
"copyrightText" : "NOASSERTION",
119+
"downloadLocation" : "https://source.skip.tools/skip-kit.git",
120+
"externalRefs" : [
121+
{
122+
"referenceCategory" : "PACKAGE-MANAGER",
123+
"referenceLocator" : "https://source.skip.tools/skip-kit.git",
124+
"referenceType" : "swiftpm"
125+
}
126+
],
127+
"filesAnalyzed" : false,
128+
"licenseConcluded" : "NOASSERTION",
129+
"licenseDeclared" : "NOASSERTION",
130+
"name" : "skip-kit",
131+
"primaryPackagePurpose" : "LIBRARY",
132+
"SPDXID" : "SPDXRef-Package-skip-kit",
133+
"supplier" : "NOASSERTION",
134+
"versionInfo" : "0.5.2"
135+
},
136+
{
137+
"copyrightText" : "NOASSERTION",
138+
"downloadLocation" : "https://source.skip.tools/skip-lib.git",
139+
"externalRefs" : [
140+
{
141+
"referenceCategory" : "PACKAGE-MANAGER",
142+
"referenceLocator" : "https://source.skip.tools/skip-lib.git",
143+
"referenceType" : "swiftpm"
144+
}
145+
],
146+
"filesAnalyzed" : false,
147+
"licenseConcluded" : "NOASSERTION",
148+
"licenseDeclared" : "NOASSERTION",
149+
"name" : "skip-lib",
150+
"primaryPackagePurpose" : "LIBRARY",
151+
"SPDXID" : "SPDXRef-Package-skip-lib",
152+
"supplier" : "NOASSERTION",
153+
"versionInfo" : "1.3.7"
154+
},
155+
{
156+
"copyrightText" : "NOASSERTION",
157+
"downloadLocation" : "https://source.skip.tools/skip-model.git",
158+
"externalRefs" : [
159+
{
160+
"referenceCategory" : "PACKAGE-MANAGER",
161+
"referenceLocator" : "https://source.skip.tools/skip-model.git",
162+
"referenceType" : "swiftpm"
163+
}
164+
],
165+
"filesAnalyzed" : false,
166+
"licenseConcluded" : "NOASSERTION",
167+
"licenseDeclared" : "NOASSERTION",
168+
"name" : "skip-model",
169+
"primaryPackagePurpose" : "LIBRARY",
170+
"SPDXID" : "SPDXRef-Package-skip-model",
171+
"supplier" : "NOASSERTION",
172+
"versionInfo" : "1.5.0"
173+
},
174+
{
175+
"copyrightText" : "NOASSERTION",
176+
"downloadLocation" : "https://source.skip.tools/skip-motion.git",
177+
"externalRefs" : [
178+
{
179+
"referenceCategory" : "PACKAGE-MANAGER",
180+
"referenceLocator" : "https://source.skip.tools/skip-motion.git",
181+
"referenceType" : "swiftpm"
182+
}
183+
],
184+
"filesAnalyzed" : false,
185+
"licenseConcluded" : "NOASSERTION",
186+
"licenseDeclared" : "NOASSERTION",
187+
"name" : "skip-motion",
188+
"primaryPackagePurpose" : "LIBRARY",
189+
"SPDXID" : "SPDXRef-Package-skip-motion",
190+
"supplier" : "NOASSERTION",
191+
"versionInfo" : "0.6.1"
192+
},
193+
{
194+
"copyrightText" : "NOASSERTION",
195+
"downloadLocation" : "https://source.skip.tools/skip-ui.git",
196+
"externalRefs" : [
197+
{
198+
"referenceCategory" : "PACKAGE-MANAGER",
199+
"referenceLocator" : "https://source.skip.tools/skip-ui.git",
200+
"referenceType" : "swiftpm"
201+
}
202+
],
203+
"filesAnalyzed" : false,
204+
"licenseConcluded" : "NOASSERTION",
205+
"licenseDeclared" : "NOASSERTION",
206+
"name" : "skip-ui",
207+
"primaryPackagePurpose" : "LIBRARY",
208+
"SPDXID" : "SPDXRef-Package-skip-ui",
209+
"supplier" : "NOASSERTION",
210+
"versionInfo" : "1.36.0"
211+
},
212+
{
213+
"copyrightText" : "NOASSERTION",
214+
"downloadLocation" : "https://source.skip.tools/skip-unit.git",
215+
"externalRefs" : [
216+
{
217+
"referenceCategory" : "PACKAGE-MANAGER",
218+
"referenceLocator" : "https://source.skip.tools/skip-unit.git",
219+
"referenceType" : "swiftpm"
220+
}
221+
],
222+
"filesAnalyzed" : false,
223+
"licenseConcluded" : "NOASSERTION",
224+
"licenseDeclared" : "NOASSERTION",
225+
"name" : "skip-unit",
226+
"primaryPackagePurpose" : "LIBRARY",
227+
"SPDXID" : "SPDXRef-Package-skip-unit",
228+
"supplier" : "NOASSERTION",
229+
"versionInfo" : "1.3.0"
230+
},
231+
{
232+
"copyrightText" : "NOASSERTION",
233+
"downloadLocation" : "https://source.skip.tools/skip-web.git",
234+
"externalRefs" : [
235+
{
236+
"referenceCategory" : "PACKAGE-MANAGER",
237+
"referenceLocator" : "https://source.skip.tools/skip-web.git",
238+
"referenceType" : "swiftpm"
239+
}
240+
],
241+
"filesAnalyzed" : false,
242+
"licenseConcluded" : "NOASSERTION",
243+
"licenseDeclared" : "NOASSERTION",
244+
"name" : "skip-web",
245+
"primaryPackagePurpose" : "LIBRARY",
246+
"SPDXID" : "SPDXRef-Package-skip-web",
247+
"supplier" : "NOASSERTION",
248+
"versionInfo" : "0.7.2"
249+
}
250+
],
251+
"relationships" : [
252+
{
253+
"relatedSpdxElement" : "SPDXRef-Package-skipapp-showcase",
254+
"relationshipType" : "DESCRIBES",
255+
"spdxElementId" : "SPDXRef-DOCUMENT"
256+
},
257+
{
258+
"relatedSpdxElement" : "SPDXRef-Package-lottie-ios",
259+
"relationshipType" : "DEPENDS_ON",
260+
"spdxElementId" : "SPDXRef-Package-skipapp-showcase"
261+
},
262+
{
263+
"relatedSpdxElement" : "SPDXRef-Package-skip",
264+
"relationshipType" : "DEPENDS_ON",
265+
"spdxElementId" : "SPDXRef-Package-skipapp-showcase"
266+
},
267+
{
268+
"relatedSpdxElement" : "SPDXRef-Package-skip-av",
269+
"relationshipType" : "DEPENDS_ON",
270+
"spdxElementId" : "SPDXRef-Package-skipapp-showcase"
271+
},
272+
{
273+
"relatedSpdxElement" : "SPDXRef-Package-skip-device",
274+
"relationshipType" : "DEPENDS_ON",
275+
"spdxElementId" : "SPDXRef-Package-skipapp-showcase"
276+
},
277+
{
278+
"relatedSpdxElement" : "SPDXRef-Package-skip-foundation",
279+
"relationshipType" : "DEPENDS_ON",
280+
"spdxElementId" : "SPDXRef-Package-skipapp-showcase"
281+
},
282+
{
283+
"relatedSpdxElement" : "SPDXRef-Package-skip-kit",
284+
"relationshipType" : "DEPENDS_ON",
285+
"spdxElementId" : "SPDXRef-Package-skipapp-showcase"
286+
},
287+
{
288+
"relatedSpdxElement" : "SPDXRef-Package-skip-lib",
289+
"relationshipType" : "DEPENDS_ON",
290+
"spdxElementId" : "SPDXRef-Package-skipapp-showcase"
291+
},
292+
{
293+
"relatedSpdxElement" : "SPDXRef-Package-skip-model",
294+
"relationshipType" : "DEPENDS_ON",
295+
"spdxElementId" : "SPDXRef-Package-skipapp-showcase"
296+
},
297+
{
298+
"relatedSpdxElement" : "SPDXRef-Package-skip-motion",
299+
"relationshipType" : "DEPENDS_ON",
300+
"spdxElementId" : "SPDXRef-Package-skipapp-showcase"
301+
},
302+
{
303+
"relatedSpdxElement" : "SPDXRef-Package-skip-ui",
304+
"relationshipType" : "DEPENDS_ON",
305+
"spdxElementId" : "SPDXRef-Package-skipapp-showcase"
306+
},
307+
{
308+
"relatedSpdxElement" : "SPDXRef-Package-skip-unit",
309+
"relationshipType" : "DEPENDS_ON",
310+
"spdxElementId" : "SPDXRef-Package-skipapp-showcase"
311+
},
312+
{
313+
"relatedSpdxElement" : "SPDXRef-Package-skip-web",
314+
"relationshipType" : "DEPENDS_ON",
315+
"spdxElementId" : "SPDXRef-Package-skipapp-showcase"
316+
}
317+
],
318+
"SPDXID" : "SPDXRef-DOCUMENT",
319+
"spdxVersion" : "SPDX-2.3"
320+
}

0 commit comments

Comments
 (0)