35
35
)
36
36
37
37
func List () map [string ]string {
38
+ if err := discoverDrivers (); err != nil {
39
+ logrus .Warnf ("Error discovering drivers: %v" , err )
40
+ }
41
+
38
42
vmTypes := make (map [string ]string )
39
43
for name := range internalDrivers {
40
44
vmTypes [name ] = "internal"
@@ -46,6 +50,10 @@ func List() map[string]string {
46
50
}
47
51
48
52
func Get (name string ) (* ExternalDriver , driver.Driver , bool ) {
53
+ if err := discoverDrivers (); err != nil {
54
+ logrus .Warnf ("Error discovering drivers: %v" , err )
55
+ }
56
+
49
57
internalDriver , exists := internalDrivers [name ]
50
58
if ! exists {
51
59
externalDriver , exists := ExternalDrivers [name ]
@@ -56,19 +64,24 @@ func Get(name string) (*ExternalDriver, driver.Driver, bool) {
56
64
return nil , internalDriver , exists
57
65
}
58
66
59
- func RegisterExternalDriver (name , path string ) {
67
+ func registerExternalDriver (name , path string ) {
60
68
if _ , exists := ExternalDrivers [name ]; exists {
61
- logrus .Debugf ("Driver %q is already registered, skipping" , name )
62
69
return
63
70
}
71
+
72
+ if _ , exists := internalDrivers [name ]; exists {
73
+ logrus .Warnf ("Driver %q is already registered as an internal driver, skipping external registration" , name )
74
+ return
75
+ }
76
+
64
77
ExternalDrivers [name ] = & ExternalDriver {
65
78
Name : name ,
66
79
Path : path ,
67
80
Logger : logrus .New (),
68
81
}
69
82
}
70
83
71
- func DiscoverDrivers () error {
84
+ func discoverDrivers () error {
72
85
prefix , err := usrlocalsharelima .Prefix ()
73
86
if err != nil {
74
87
return err
@@ -144,19 +157,13 @@ func registerDriverFile(path string) {
144
157
145
158
name := strings .TrimPrefix (base , "lima-driver-" )
146
159
147
- RegisterExternalDriver (name , path )
160
+ registerExternalDriver (name , path )
148
161
}
149
162
150
163
func isExecutable (mode os.FileMode ) bool {
151
164
return mode & 0111 != 0
152
165
}
153
166
154
- func init () {
155
- if err := DiscoverDrivers (); err != nil {
156
- logrus .Warnf ("Error discovering drivers: %v" , err )
157
- }
158
- }
159
-
160
167
func Register (driver driver.Driver ) {
161
168
name := driver .Info ().DriverName
162
169
if _ , exists := internalDrivers [name ]; exists {
0 commit comments