( ctx context.Context, bucketWithStorageMatcherApplied storage.ReadBucket, v1BufYAMLObjectData ObjectData, v1BufLockObjectData ObjectData, )
| 227 | func (*digest) isDigest() {} |
| 228 | |
| 229 | func getB4Digest( |
| 230 | ctx context.Context, |
| 231 | bucketWithStorageMatcherApplied storage.ReadBucket, |
| 232 | v1BufYAMLObjectData ObjectData, |
| 233 | v1BufLockObjectData ObjectData, |
| 234 | ) (Digest, error) { |
| 235 | var fileNodes []cas.FileNode |
| 236 | if err := storage.WalkReadObjects( |
| 237 | ctx, |
| 238 | // This is extreme defensive programming. We've gone out of our way to make sure |
| 239 | // that the bucket is already filtered, but it's just too important to mess up here. |
| 240 | storage.FilterReadBucket(bucketWithStorageMatcherApplied, getStorageMatcher(ctx, bucketWithStorageMatcherApplied)), |
| 241 | "", |
| 242 | func(readObject storage.ReadObject) error { |
| 243 | digest, err := cas.NewDigestForContent(cas.DigestTypeShake256, readObject) |
| 244 | if err != nil { |
| 245 | return err |
| 246 | } |
| 247 | fileNode, err := cas.NewFileNode(readObject.Path(), digest) |
| 248 | if err != nil { |
| 249 | return err |
| 250 | } |
| 251 | fileNodes = append(fileNodes, fileNode) |
| 252 | return nil |
| 253 | }, |
| 254 | ); err != nil { |
| 255 | return nil, err |
| 256 | } |
| 257 | for _, objectData := range []ObjectData{ |
| 258 | v1BufYAMLObjectData, |
| 259 | v1BufLockObjectData, |
| 260 | } { |
| 261 | if objectData == nil { |
| 262 | // We may not have object data for one of these files, this is valid. |
| 263 | continue |
| 264 | } |
| 265 | digest, err := cas.NewDigestForContent(cas.DigestTypeShake256, bytes.NewReader(objectData.Data())) |
| 266 | if err != nil { |
| 267 | return nil, err |
| 268 | } |
| 269 | fileNode, err := cas.NewFileNode(objectData.Name(), digest) |
| 270 | if err != nil { |
| 271 | return nil, err |
| 272 | } |
| 273 | fileNodes = append(fileNodes, fileNode) |
| 274 | } |
| 275 | manifest, err := cas.NewManifest(fileNodes) |
| 276 | if err != nil { |
| 277 | return nil, err |
| 278 | } |
| 279 | casDigest, err := cas.ManifestToDigest(manifest, cas.DigestTypeShake256) |
| 280 | if err != nil { |
| 281 | return nil, err |
| 282 | } |
| 283 | return NewDigest(DigestTypeB4, casDigest) |
| 284 | } |
| 285 | |
| 286 | func getB5DigestForBucketAndModuleDeps( |
no test coverage detected
searching dependent graphs…