@@ -34,7 +34,7 @@ RUNNING_VM_COLOR = "#29cc00"
34
34
# Stopped VM color (default red)
35
35
STOPPED_VM_COLOR = "#ff0033"
36
36
37
- VERSION = "1.3.0 "
37
+ VERSION = "1.3.1 "
38
38
39
39
40
40
def logSetup (level : str = "INFO" ):
@@ -185,12 +185,7 @@ def listContainers(vm: str = "default"):
185
185
:return dict:
186
186
"""
187
187
containers = {}
188
- if vm != "default" :
189
- env = dict (os .environ , LIMA_INSTANCE = vm )
190
- else :
191
- env = dict (os .environ )
192
- newpath = "%s:/usr/local/bin" % env ["PATH" ]
193
- env ["PATH" ] = newpath
188
+ env = prep_environment_for_lima (vm = vm )
194
189
195
190
command = [
196
191
"lima" ,
@@ -223,13 +218,7 @@ def listImages(vm: str = "default"):
223
218
:return dict:
224
219
"""
225
220
images = {}
226
- if vm != "default" :
227
- env = dict (os .environ , LIMA_INSTANCE = vm )
228
- else :
229
- env = dict (os .environ )
230
-
231
- newpath = "%s:/usr/local/bin" % env ["PATH" ]
232
- env ["PATH" ] = newpath
221
+ env = prep_environment_for_lima (vm = vm )
233
222
234
223
command = ["lima" , "nerdctl" , "images" , "--format" , "{{json .}}" ]
235
224
raw = jsonCommand (command = command , env = env )
@@ -262,9 +251,7 @@ def listVMs():
262
251
"""
263
252
vmList = {}
264
253
265
- env = dict (os .environ )
266
- newpath = "%s:/usr/local/bin" % env ["PATH" ]
267
- env ["PATH" ] = newpath
254
+ env = prep_environment_for_lima ()
268
255
269
256
vmRaw = subprocess .run (
270
257
["limactl" , "list" , "--json" ], env = env , stdout = subprocess .PIPE
@@ -283,17 +270,24 @@ def prep_environment_for_lima(vm: str = "default", env: dict = dict(os.environ))
283
270
"""
284
271
Set up an environment dictionary we can use to run a lima command.
285
272
286
- Also adds /usr/local/bin to $PATH
273
+ Also adds /usr/local/bin, /opt/homebrew/bin and /opt/local/bin to $PATH
274
+ if they exist and are directories.
287
275
288
276
:param str vm: VM to work in
289
277
:param dict env: Environment variables to base returned environment on
290
278
291
- :return dict: Environment dictionary, with /usr/local/bin added to $PATH
279
+ :return dict: Environment dictionary, with extra bindirs added to $PATH
292
280
"""
293
- newpath = "%s:/usr/local/bin" % env ["PATH" ]
294
- env ["PATH" ] = newpath
281
+ extrapaths = ["/usr/local/bin" , "/opt/homebrew/bin" , "/opt/local/bin" ]
282
+ for p in extrapaths :
283
+ if os .path .isdir (p ):
284
+ logging .info ("Adding %s to $PATH" , p )
285
+ newpath = "%s:%s" % (env ["PATH" ], p )
286
+ env ["PATH" ] = newpath
287
+ logging .info ("New path: %s" , env ["PATH" ])
295
288
296
289
if vm != "default" :
290
+ logging .info ("Setting LIMA_INSTANCE to %s" , vm )
297
291
env ["LIMA_INSTANCE" ] = vm
298
292
return env
299
293
@@ -443,8 +437,9 @@ def aboutMenu():
443
437
"""
444
438
Print details about plugin
445
439
"""
440
+ env = prep_environment_for_lima ()
446
441
limaVersion = subprocess .run (
447
- ["/usr/local/bin/ limactl" , "--version" ], stdout = subprocess .PIPE
442
+ ["limactl" , "--version" ], stdout = subprocess .PIPE , env = env
448
443
).stdout .decode ("utf-8" )
449
444
450
445
print ("About…" )
0 commit comments