Publish detached sanitized source evidence
This commit is contained in:
@@ -51,6 +51,46 @@ type sourceVersionState struct {
|
||||
diagnostics []Diagnostic
|
||||
}
|
||||
|
||||
func sourceInfosWithVersionEvidence(sources []SourceInfo, evidence []*sourceVersionEvidence, secrets map[string]bool, conservative bool) []SourceInfo {
|
||||
result := cloneSourceInfos(sources)
|
||||
if len(evidence) == 0 {
|
||||
return result
|
||||
}
|
||||
sensitivity := newDiffSensitivity(secrets, nil)
|
||||
for _, item := range evidence {
|
||||
if item == nil || item.sourceID == "" {
|
||||
continue
|
||||
}
|
||||
for index := range result {
|
||||
if result[index].ID == item.sourceID {
|
||||
result[index].VersionCheck = sourceVersionCheckForEvidence(item, sensitivity, conservative)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func sourceVersionCheckForEvidence(evidence *sourceVersionEvidence, sensitivity *diffSensitivity, conservative bool) *SourceVersionCheck {
|
||||
path := evidence.resolvedPath
|
||||
if !path.valid() {
|
||||
path = evidence.path
|
||||
}
|
||||
version := evidence.version
|
||||
redacted := evidence.redacted
|
||||
if conservative {
|
||||
redacted = redacted || version.Text != ""
|
||||
} else if sensitivity.isSensitiveAtOrAbove(appendDestination(evidence.destination, path).String()) {
|
||||
redacted = true
|
||||
}
|
||||
if redacted {
|
||||
version.Text = ""
|
||||
}
|
||||
return &SourceVersionCheck{
|
||||
Path: path.clone(), Version: version, Location: cloneLocation(evidence.location), Redacted: redacted,
|
||||
}
|
||||
}
|
||||
|
||||
func (state *sourceVersionState) process(root *document.Node, role sourceVersionRole, destination Path, sourceID string) (sourceVersionProcessingResult, []Diagnostic) {
|
||||
if state == nil || state.mode == sourceVersionModeDefault {
|
||||
return sourceVersionProcessingResult{}, nil
|
||||
|
||||
Reference in New Issue
Block a user