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

Function UniqueDigestTypeForModuleKeys

private/bufpkg/bufmodule/module_key.go:80–100  ·  view source on GitHub ↗

UniqueDigestTypeForModuleKeys returns the single DigestType for the Digests on the ModuleKeys. If the ModuleKeys have different DigestTypes, an error is returned. If the ModuleKeys slice is empty, an error is returned.

(moduleKeys []ModuleKey)

Source from the content-addressed store, hash-verified

78// If the ModuleKeys have different DigestTypes, an error is returned.
79// If the ModuleKeys slice is empty, an error is returned.
80func UniqueDigestTypeForModuleKeys(moduleKeys []ModuleKey) (DigestType, error) {
81 if len(moduleKeys) == 0 {
82 return 0, syserror.New("empty moduleKeys passed to UniqueDigestTypeForModuleKeys")
83 }
84 digests, err := xslices.MapError(moduleKeys, ModuleKey.Digest)
85 if err != nil {
86 return 0, err
87 }
88 digestType := digests[0].Type()
89 for _, digest := range digests[1:] {
90 if digestType != digest.Type() {
91 return 0, fmt.Errorf(
92 "different digest types detected where the same digest type must be used: %v, %v\n%s",
93 digestType,
94 digest.Type(),
95 strings.Join(xslices.Map(moduleKeys, ModuleKey.String), "\n"),
96 )
97 }
98 }
99 return digestType, nil
100}
101
102// ModuleKeyToCommitKey converts a ModuleKey to a CommitKey.
103//

Calls 2

NewFunction · 0.92
TypeMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…