@@ -40,7 +40,7 @@ extension ImageStore {
40
40
}
41
41
42
42
/// Pull the required image layers for the provided descriptor and platform(s) into the given directory using the provided client. Returns a descriptor to the Index manifest.
43
- internal func `import`( root: Descriptor , matcher: ( ContainerizationOCI . Platform ) -> Bool ) async throws -> Descriptor {
43
+ internal func `import`( root: OCIDescriptor , matcher: ( OCIPlatform ) -> Bool ) async throws -> OCIDescriptor {
44
44
var toProcess = [ root]
45
45
while !toProcess. isEmpty {
46
46
// Count the total number of blobs and their size
@@ -61,14 +61,14 @@ extension ImageStore {
61
61
toProcess = filtered. uniqued { $0. digest }
62
62
}
63
63
64
- guard root. mediaType != MediaTypes . dockerManifestList && root. mediaType != MediaTypes . index else {
64
+ guard root. mediaType != OCIMediaTypes . dockerManifestList && root. mediaType != OCIMediaTypes . index else {
65
65
return root
66
66
}
67
67
68
68
// Create an index for the root descriptor and write it to the content store
69
69
let index = try await self . createIndex ( for: root)
70
- // In cases where the root descriptor pointed to `MediaTypes .imageManifest`
71
- // Or `MediaTypes .dockerManifest`, it is required that we check the supported platform
70
+ // In cases where the root descriptor pointed to `OCIMediaTypes .imageManifest`
71
+ // Or `OCIMediaTypes .dockerManifest`, it is required that we check the supported platform
72
72
// matches the platforms we were asked to pull. This can be done only after we created
73
73
// the Index.
74
74
let supportedPlatforms = index. manifests. compactMap { $0. platform }
@@ -77,13 +77,13 @@ extension ImageStore {
77
77
}
78
78
let writer = try ContentWriter ( for: self . ingestDir)
79
79
let result = try writer. create ( from: index)
80
- return Descriptor (
81
- mediaType: MediaTypes . index,
80
+ return OCIDescriptor (
81
+ mediaType: OCIMediaTypes . index,
82
82
digest: result. digest. digestString,
83
83
size: Int64 ( result. size) )
84
84
}
85
85
86
- private func getManifestContent< T: Sendable & Codable > ( descriptor: Descriptor ) async throws -> T {
86
+ private func getManifestContent< T: Sendable & Codable > ( descriptor: OCIDescriptor ) async throws -> T {
87
87
do {
88
88
if let content = try await self . contentStore. get ( digest: descriptor. digest. trimmingDigestPrefix) {
89
89
return try content. decode ( )
@@ -97,16 +97,16 @@ extension ImageStore {
97
97
}
98
98
}
99
99
100
- private func walk( _ descriptors: [ Descriptor ] ) async throws -> [ Descriptor ] {
101
- var out : [ Descriptor ] = [ ]
100
+ private func walk( _ descriptors: [ OCIDescriptor ] ) async throws -> [ OCIDescriptor ] {
101
+ var out : [ OCIDescriptor ] = [ ]
102
102
for desc in descriptors {
103
103
let mediaType = desc. mediaType
104
104
switch mediaType {
105
- case MediaTypes . index, MediaTypes . dockerManifestList:
106
- let index : Index = try await self . getManifestContent ( descriptor: desc)
105
+ case OCIMediaTypes . index, OCIMediaTypes . dockerManifestList:
106
+ let index : OCIIndex = try await self . getManifestContent ( descriptor: desc)
107
107
out. append ( contentsOf: index. manifests)
108
- case MediaTypes . imageManifest, MediaTypes . dockerManifest:
109
- let manifest : Manifest = try await self . getManifestContent ( descriptor: desc)
108
+ case OCIMediaTypes . imageManifest, OCIMediaTypes . dockerManifest:
109
+ let manifest : OCIManifest = try await self . getManifestContent ( descriptor: desc)
110
110
out. append ( manifest. config)
111
111
out. append ( contentsOf: manifest. layers)
112
112
default :
@@ -117,7 +117,7 @@ extension ImageStore {
117
117
return out
118
118
}
119
119
120
- private func fetchAll( _ descriptors: [ Descriptor ] ) async throws {
120
+ private func fetchAll( _ descriptors: [ OCIDescriptor ] ) async throws {
121
121
try await withThrowingTaskGroup ( of: Void . self) { group in
122
122
var iterator = descriptors. makeIterator ( )
123
123
for _ in 0 ..< 8 {
@@ -137,7 +137,7 @@ extension ImageStore {
137
137
}
138
138
}
139
139
140
- private func fetch( _ descriptor: Descriptor ) async throws {
140
+ private func fetch( _ descriptor: OCIDescriptor ) async throws {
141
141
if let found = try await self . contentStore. get ( digest: descriptor. digest) {
142
142
try FileManager . default. copyItem ( at: found. path, to: ingestDir. appendingPathComponent ( descriptor. digest. trimmingDigestPrefix) )
143
143
await progress ? ( [
@@ -160,7 +160,7 @@ extension ImageStore {
160
160
] )
161
161
}
162
162
163
- private func fetchBlob( _ descriptor: Descriptor ) async throws {
163
+ private func fetchBlob( _ descriptor: OCIDescriptor ) async throws {
164
164
let id = UUID ( ) . uuidString
165
165
let fm = FileManager . default
166
166
let tempFile = ingestDir. appendingPathComponent ( id)
@@ -179,7 +179,7 @@ extension ImageStore {
179
179
}
180
180
181
181
@discardableResult
182
- private func fetchData( _ descriptor: Descriptor ) async throws -> Data {
182
+ private func fetchData( _ descriptor: OCIDescriptor ) async throws -> Data {
183
183
let data = try await client. fetchData ( name: name, descriptor: descriptor)
184
184
let writer = try ContentWriter ( for: ingestDir)
185
185
let result = try writer. write ( data)
@@ -195,11 +195,11 @@ extension ImageStore {
195
195
return data
196
196
}
197
197
198
- private func createIndex( for root: Descriptor ) async throws -> Index {
198
+ private func createIndex( for root: OCIDescriptor ) async throws -> OCIIndex {
199
199
switch root. mediaType {
200
- case MediaTypes . index, MediaTypes . dockerManifestList:
200
+ case OCIMediaTypes . index, OCIMediaTypes . dockerManifestList:
201
201
return try await self . getManifestContent ( descriptor: root)
202
- case MediaTypes . imageManifest, MediaTypes . dockerManifest:
202
+ case OCIMediaTypes . imageManifest, OCIMediaTypes . dockerManifest:
203
203
let supportedPlatforms = try await getSupportedPlatforms ( for: root)
204
204
guard supportedPlatforms. count == 1 else {
205
205
throw ContainerizationError (
@@ -211,15 +211,15 @@ extension ImageStore {
211
211
let platform = supportedPlatforms. first!
212
212
var root = root
213
213
root. platform = platform
214
- let index = ContainerizationOCI . Index ( schemaVersion: 2 , manifests: [ root] )
214
+ let index = OCIIndex ( schemaVersion: 2 , manifests: [ root] )
215
215
return index
216
216
default :
217
217
throw ContainerizationError ( . internalError, message: " Failed to create index for descriptor \( root. digest) , media type \( root. mediaType) " )
218
218
}
219
219
}
220
220
221
- private func getSupportedPlatforms( for root: Descriptor ) async throws -> [ ContainerizationOCI . Platform ] {
222
- var supportedPlatforms : [ ContainerizationOCI . Platform ] = [ ]
221
+ private func getSupportedPlatforms( for root: OCIDescriptor ) async throws -> [ OCIPlatform ] {
222
+ var supportedPlatforms : [ OCIPlatform ] = [ ]
223
223
var toProcess = [ root]
224
224
while !toProcess. isEmpty {
225
225
let children = try await self . walk ( toProcess)
@@ -229,9 +229,9 @@ extension ImageStore {
229
229
continue
230
230
}
231
231
switch child. mediaType {
232
- case MediaTypes . imageConfig, MediaTypes . dockerImageConfig:
233
- let config : ContainerizationOCI . Image = try await self . getManifestContent ( descriptor: child)
234
- let p = ContainerizationOCI . Platform (
232
+ case OCIMediaTypes . imageConfig, OCIMediaTypes . dockerImageConfig:
233
+ let config : OCIImage = try await self . getManifestContent ( descriptor: child)
234
+ let p = OCIPlatform (
235
235
arch: config. architecture, os: config. os, osFeatures: config. osFeatures, variant: config. variant
236
236
)
237
237
supportedPlatforms. append ( p)
0 commit comments