func extractProcessorsVersionFromGoModule()

in ci-tools/main.go [153:184]


func extractProcessorsVersionFromGoModule() (string, error) {
	goModFile, err := os.Open("go.mod")
	if err != nil {
		return "", err
	}

	goModFileBytes, err := io.ReadAll(goModFile)
	_ = goModFile.Close()
	if err != nil {
		return "", err
	}

	goModInfo, err := modfile.Parse("go.mod", goModFileBytes, nil)
	if err != nil {
		return "", err
	}

	var version string
	for _, dep := range goModInfo.Require {
		if dep.Indirect {
			continue
		}
		if strings.HasPrefix(dep.Mod.Path, "github.com/open-telemetry/opentelemetry-collector-contrib/processor/") {
			if version != "" && version != dep.Mod.Version {
				return "", fmt.Errorf("multiple opentelemetry-collector-contrib versions found: %q and %q", version, dep.Mod.Version)
			}
			version = dep.Mod.Version
		}
	}

	return version, nil
}