Skip to content

Commit feb827a

Browse files
feat: improve resolver loading
1 parent 83e5043 commit feb827a

File tree

3 files changed

+24
-6
lines changed

3 files changed

+24
-6
lines changed

pkg/plugin/discovery/discovery.go

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,27 @@ type Discovery struct {
1515
resolvers map[string]resolver.Resolver
1616
}
1717

18+
func loadResolvers(resolvers ...resolver.Resolver) (map[string]resolver.Resolver, error) {
19+
resolversMap := make(map[string]resolver.Resolver)
20+
for _, r := range resolvers {
21+
for _, name := range r.Names() {
22+
if _, ok := resolversMap[name]; ok {
23+
return nil, fmt.Errorf("resolver %s already exists", name)
24+
}
25+
resolversMap[name] = r
26+
}
27+
}
28+
return resolversMap, nil
29+
}
30+
1831
func New(config *config.Config) (*Discovery, error) {
19-
registryResolver := registry.NewResolver()
32+
resolvers, err := loadResolvers(registry.NewResolver())
33+
if err != nil {
34+
return nil, err
35+
}
2036
return &Discovery{
21-
config: config,
22-
resolvers: map[string]resolver.Resolver{
23-
"default": registryResolver,
24-
"registry": registryResolver,
25-
},
37+
config: config,
38+
resolvers: resolvers,
2639
}, nil
2740
}
2841

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,7 @@ func (r RegistryResolver) ResolvePlugin(pluginInfo *plugin.PluginInfo) (*resolve
6060
Version: foundVersion,
6161
}, nil
6262
}
63+
64+
func (r *RegistryResolver) Names() []string {
65+
return []string{"default", "registry"}
66+
}

pkg/plugin/discovery/resolver/resolver.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ type PluginDownloadInfo struct {
1111

1212
type Resolver interface {
1313
ResolvePlugin(*plugin.PluginInfo) (*PluginDownloadInfo, error)
14+
Names() []string
1415
}

0 commit comments

Comments
 (0)