in index.go [238:292]
func CollectIntegrationsDataStreams(integrationsPath string) []map[string]interface{} {
var allDataStreams []map[string]interface{}
packages, err := os.ReadDir(filepath.Join(integrationsPath, "packages"))
fmt.Printf("Collecting integrations\n")
if err != nil {
fmt.Printf("Error: %v\n", err)
return allDataStreams
}
for _, packageInfo := range packages {
if packageInfo.IsDir() {
packagePath := filepath.Join(integrationsPath, "packages", packageInfo.Name())
buildYmlPath := filepath.Join(packagePath, "_dev", "build", "build.yml")
dataStreamPackagePath := filepath.Join(integrationsPath, "packages", packageInfo.Name(), "data_stream")
dataStreams, err := os.ReadDir(dataStreamPackagePath)
if err != nil {
fmt.Printf("Error: %v\n", err)
}
integrationManifestPath := filepath.Join(packagePath, "manifest.yml")
integrationManifest := collectManifest(integrationManifestPath)
buildYml := collectManifest(buildYmlPath)
// check whther the integration has a _dev/benchmark folder
benchmarkPath := filepath.Join(packagePath, "_dev", "benchmark")
if _, err := os.Stat(benchmarkPath); err == nil {
// add flag to the integration manifest
integrationManifest["has_benchmark"] = true
} else {
integrationManifest["has_benchmark"] = false
}
for _, dataStream := range dataStreams {
manifestPath := filepath.Join(dataStreamPackagePath, dataStream.Name(), "manifest.yml")
dataStreamManifest := collectManifest(manifestPath)
// enrich data stream manifest with integration manifest
dataStreamManifest["integration"] = integrationManifest
dataStreamManifest["buildYml"] = buildYml
// check whether the data streams has a _dev/test/pipeline folder
pipelinePath := filepath.Join(dataStreamPackagePath, dataStream.Name(), "_dev", "test", "pipeline")
if _, err := os.Stat(pipelinePath); err == nil {
// add flag to the data stream manifest
dataStreamManifest["has_pipeline_test"] = true
} else {
dataStreamManifest["has_pipeline_test"] = false
}
// same for system test
systemTestPath := filepath.Join(dataStreamPackagePath, dataStream.Name(), "_dev", "test", "system")
if _, err := os.Stat(systemTestPath); err == nil {
dataStreamManifest["has_system_test"] = true
} else {
dataStreamManifest["has_system_test"] = false
}
allDataStreams = append(allDataStreams, dataStreamManifest)
}
}
}
return allDataStreams
}