in dev/import-beats/variables_compact.go [16:43]
func compactDataStreamVariables(dataStreams dataStreamContentArray) (dataStreamContentArray, map[string][]packages.Variable, error) { // map[inputType][]util.Variable
varsPerInputType := map[string][]packages.Variable{}
var compacted dataStreamContentArray
for _, dataStream := range dataStreams {
for i, stream := range dataStream.manifest.Streams {
var notCompactedVars []packages.Variable
for _, aVar := range stream.Vars {
isAlreadyCompacted := isVariableAlreadyCompacted(varsPerInputType, aVar, stream.Input)
if !isAlreadyCompacted {
canBeCompacted, err := canVariableBeCompacted(dataStreams, aVar, stream.Input)
if err != nil {
return nil, nil, errors.Wrap(err, "checking compactibility failed")
}
if canBeCompacted {
varsPerInputType[stream.Input] = append(varsPerInputType[stream.Input], aVar)
} else {
notCompactedVars = append(notCompactedVars, aVar)
}
}
}
stream.Vars = notCompactedVars
dataStream.manifest.Streams[i] = stream
}
compacted = append(compacted, dataStream)
}
return compacted, varsPerInputType, nil
}