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)
| 78 | // If the ModuleKeys have different DigestTypes, an error is returned. |
| 79 | // If the ModuleKeys slice is empty, an error is returned. |
| 80 | func 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 | // |
no test coverage detected
searching dependent graphs…