MCPcopy Create free account
hub / github.com/bufbuild/buf / getB4Digest

Function getB4Digest

private/bufpkg/bufmodule/digest.go:229–284  ·  view source on GitHub ↗
(
	ctx context.Context,
	bucketWithStorageMatcherApplied storage.ReadBucket,
	v1BufYAMLObjectData ObjectData,
	v1BufLockObjectData ObjectData,
)

Source from the content-addressed store, hash-verified

227func (*digest) isDigest() {}
228
229func 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
286func getB5DigestForBucketAndModuleDeps(

Callers 2

newModuleDataFunction · 0.85

Calls 11

WalkReadObjectsFunction · 0.92
FilterReadBucketFunction · 0.92
NewDigestForContentFunction · 0.92
NewFileNodeFunction · 0.92
NewManifestFunction · 0.92
ManifestToDigestFunction · 0.92
getStorageMatcherFunction · 0.85
NewDigestFunction · 0.70
PathMethod · 0.65
DataMethod · 0.65
NameMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…