Skip to content

Commit 8f1db0a

Browse files
feat: add batch resolving
1 parent 9e6e36e commit 8f1db0a

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

pkg/plugin/discovery/resolver/registry/registry.go

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
"github.com/Masterminds/semver/v3"
1010
"github.com/go-semantic-release/plugin-registry/pkg/client"
11+
"github.com/go-semantic-release/plugin-registry/pkg/registry"
1112
"github.com/go-semantic-release/semantic-release/v2/pkg/plugin"
1213
"github.com/go-semantic-release/semantic-release/v2/pkg/plugin/discovery/resolver"
1314
)
@@ -82,7 +83,30 @@ func (r *Resolver) ResolvePlugin(pluginInfo *plugin.Info) (*resolver.PluginDownl
8283
}
8384

8485
func (r *Resolver) BatchResolvePlugins(pluginInfos []*plugin.Info) (*resolver.BatchPluginDownloadInfo, error) {
85-
return nil, fmt.Errorf("not implemented")
86+
batchRequest := &registry.BatchRequest{
87+
OS: runtime.GOOS,
88+
Arch: runtime.GOARCH,
89+
Plugins: make([]*registry.BatchRequestPlugin, len(pluginInfos)),
90+
}
91+
for i, pluginInfo := range pluginInfos {
92+
versionConstraint := ""
93+
if pluginInfo.Constraint != nil {
94+
versionConstraint = pluginInfo.Constraint.String()
95+
}
96+
batchRequest.Plugins[i] = &registry.BatchRequestPlugin{
97+
FullName: pluginInfo.ShortNormalizedName,
98+
VersionConstraint: versionConstraint,
99+
}
100+
}
101+
batchResponse, err := r.client.SendBatchRequest(context.Background(), batchRequest)
102+
if err != nil {
103+
return nil, err
104+
}
105+
106+
return &resolver.BatchPluginDownloadInfo{
107+
URL: batchResponse.DownloadURL,
108+
Checksum: batchResponse.DownloadChecksum,
109+
}, nil
86110
}
87111

88112
func (r *Resolver) Names() []string {

pkg/plugin/manager/manager.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ func (m *PluginManager) checkIfSameResolvers(infos []*plugin.Info) (string, bool
168168

169169
func (m *PluginManager) FetchAllPlugins() error {
170170
batchWasPossible, pInfos, err := m.PrefetchAllPluginsIfBatchIsPossible()
171-
if err != nil {
171+
if err != nil && pInfos == nil {
172172
return err
173173
}
174174
if batchWasPossible {
@@ -195,7 +195,7 @@ func (m *PluginManager) PrefetchAllPluginsIfBatchIsPossible() (bool, []*plugin.I
195195
// all plugins have the same resolver, and it supports batch resolving
196196
bErr := m.discovery.FindPluginsWithBatchResolver(resolver, pInfos)
197197
if bErr != nil {
198-
return false, nil, bErr
198+
return false, pInfos, bErr
199199
}
200200
return true, pInfos, nil
201201
}

0 commit comments

Comments
 (0)