Skip to content

Commit 76e73f9

Browse files
committed
driver(external): external driver manager init
Signed-off-by: Ansuman Sahoo <[email protected]>
1 parent 9db1cf4 commit 76e73f9

File tree

1 file changed

+36
-3
lines changed

1 file changed

+36
-3
lines changed

pkg/registry/registry.go

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,19 @@ import (
77
"sync"
88

99
"github.com/lima-vm/lima/pkg/driver"
10+
"github.com/sirupsen/logrus"
1011
)
1112

1213
type Registry struct {
13-
drivers map[string]driver.Driver
14-
mu sync.RWMutex
14+
drivers map[string]driver.Driver
15+
externalDrivers map[string]string // For now mapping external driver names to paths
16+
mu sync.RWMutex
1517
}
1618

1719
func NewRegistry() *Registry {
1820
return &Registry{
19-
drivers: make(map[string]driver.Driver),
21+
drivers: make(map[string]driver.Driver),
22+
externalDrivers: make(map[string]string),
2023
}
2124
}
2225

@@ -28,6 +31,10 @@ func (r *Registry) List() []string {
2831
for name := range r.drivers {
2932
names = append(names, name)
3033
}
34+
35+
for name := range r.externalDrivers {
36+
names = append(names, name+" (external)")
37+
}
3138
return names
3239
}
3340

@@ -39,6 +46,32 @@ func (r *Registry) Get(name string) (driver.Driver, bool) {
3946
return driver, exists
4047
}
4148

49+
func (r *Registry) GetExternalDriver(name string) (string, bool) {
50+
r.mu.RLock()
51+
defer r.mu.RUnlock()
52+
53+
plugin, exists := r.externalDrivers[name]
54+
return plugin, exists
55+
}
56+
57+
func (r *Registry) RegisterPlugin(name, path string) {
58+
r.mu.Lock()
59+
defer r.mu.Unlock()
60+
61+
if _, exists := r.externalDrivers[name]; exists {
62+
logrus.Debugf("Plugin %q is already registered, skipping", name)
63+
return
64+
}
65+
66+
r.externalDrivers[name] = path
67+
logrus.Debugf("Registered plugin %q at %s", name, path)
68+
}
69+
70+
func (r *Registry) DiscoverPlugins() error {
71+
// TODO: Implement plugin discovery logic
72+
return nil
73+
}
74+
4275
var DefaultRegistry *Registry
4376

4477
func init() {

0 commit comments

Comments
 (0)