func generateProcessorsGoGetArgument()

in ci-tools/main.go [280:313]


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

	defer func(goModFile *os.File) {
		_ = goModFile.Close()
	}(goModFile)

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

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

	var argument strings.Builder
	seem := map[string]bool{}
	for _, dep := range goModInfo.Require {
		if dep.Indirect {
			continue
		}
		if !seem[dep.Mod.Path] && strings.HasPrefix(dep.Mod.Path, "github.com/open-telemetry/opentelemetry-collector-contrib/processor/") {
			seem[dep.Mod.Path] = true
			argument.WriteString(fmt.Sprintf("%s@%s", dep.Mod.Path, version))
			argument.WriteString(" ")
		}
	}
	return argument.String(), nil
}