Skip to content

Commit

Permalink
feat: add batch resolving
Browse files Browse the repository at this point in the history
  • Loading branch information
christophwitzko committed Feb 4, 2023
1 parent 9e6e36e commit 8f1db0a
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 3 deletions.
26 changes: 25 additions & 1 deletion pkg/plugin/discovery/resolver/registry/registry.go
Expand Up @@ -8,6 +8,7 @@ import (

"github.com/Masterminds/semver/v3"
"github.com/go-semantic-release/plugin-registry/pkg/client"
"github.com/go-semantic-release/plugin-registry/pkg/registry"
"github.com/go-semantic-release/semantic-release/v2/pkg/plugin"
"github.com/go-semantic-release/semantic-release/v2/pkg/plugin/discovery/resolver"
)
Expand Down Expand Up @@ -82,7 +83,30 @@ func (r *Resolver) ResolvePlugin(pluginInfo *plugin.Info) (*resolver.PluginDownl
}

func (r *Resolver) BatchResolvePlugins(pluginInfos []*plugin.Info) (*resolver.BatchPluginDownloadInfo, error) {
return nil, fmt.Errorf("not implemented")
batchRequest := &registry.BatchRequest{
OS: runtime.GOOS,
Arch: runtime.GOARCH,
Plugins: make([]*registry.BatchRequestPlugin, len(pluginInfos)),
}
for i, pluginInfo := range pluginInfos {
versionConstraint := ""
if pluginInfo.Constraint != nil {
versionConstraint = pluginInfo.Constraint.String()
}
batchRequest.Plugins[i] = &registry.BatchRequestPlugin{
FullName: pluginInfo.ShortNormalizedName,
VersionConstraint: versionConstraint,
}
}
batchResponse, err := r.client.SendBatchRequest(context.Background(), batchRequest)
if err != nil {
return nil, err
}

return &resolver.BatchPluginDownloadInfo{
URL: batchResponse.DownloadURL,
Checksum: batchResponse.DownloadChecksum,
}, nil
}

func (r *Resolver) Names() []string {
Expand Down
4 changes: 2 additions & 2 deletions pkg/plugin/manager/manager.go
Expand Up @@ -168,7 +168,7 @@ func (m *PluginManager) checkIfSameResolvers(infos []*plugin.Info) (string, bool

func (m *PluginManager) FetchAllPlugins() error {
batchWasPossible, pInfos, err := m.PrefetchAllPluginsIfBatchIsPossible()
if err != nil {
if err != nil && pInfos == nil {
return err
}
if batchWasPossible {
Expand All @@ -195,7 +195,7 @@ func (m *PluginManager) PrefetchAllPluginsIfBatchIsPossible() (bool, []*plugin.I
// all plugins have the same resolver, and it supports batch resolving
bErr := m.discovery.FindPluginsWithBatchResolver(resolver, pInfos)
if bErr != nil {
return false, nil, bErr
return false, pInfos, bErr
}
return true, pInfos, nil
}
Expand Down

0 comments on commit 8f1db0a

Please sign in to comment.