func CollectIntegrationsDataStreams()

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
}