code: func (actor Actor) GetPluginInfoFromRepositoriesForPlatform(pluginName string, pluginRepos []configv3.PluginRepository, platform string) (PluginInfo, []string, error) {
  	var reposWithPlugin []string
  	var newestPluginInfo PluginInfo
  	var pluginFoundWithIncompatibleBinary bool
  
  	for _, repo := range pluginRepos {
  		pluginInfo, err := actor.getPluginInfoFromRepositoryForPlatform(pluginName, repo, platform)
  		switch err.(type) {
  		case actionerror.PluginNotFoundInRepositoryError:
  			continue
  		case actionerror.NoCompatibleBinaryError:
  			pluginFoundWithIncompatibleBinary = true
  			continue
  		case nil:
  			if len(reposWithPlugin) == 0 || lessThan(newestPluginInfo.Version, pluginInfo.Version) {
  				newestPluginInfo = pluginInfo
  				reposWithPlugin = []string{repo.Name}
  			} else if pluginInfo.Version == newestPluginInfo.Version {
  				reposWithPlugin = append(reposWithPlugin, repo.Name)
  			}
  		default:
  			return PluginInfo{}, nil, actionerror.FetchingPluginInfoFromRepositoryError{
  				RepositoryName: repo.Name,
  				Err:            err,
  			}
  		}
  	}
  
  	if len(reposWithPlugin) == 0 {
  		if pluginFoundWithIncompatibleBinary {
  			return PluginInfo{}, nil, actionerror.NoCompatibleBinaryError{}
  		}
  		return PluginInfo{}, nil, actionerror.PluginNotFoundInAnyRepositoryError{PluginName: pluginName}
  	}
  	return newestPluginInfo, reposWithPlugin, nil
  }
docs: // GetPluginInfoFromRepositoriesForPlatform returns the newest version of the specified plugin
  // and all the repositories that contain that version.