@@ -152,14 +152,28 @@ function printMenu() {
152
152
echo " --⛔ Stop $name VM | bash=$XBAR_PLUGIN param1=stop param2=$name terminal=false refresh=true"
153
153
154
154
echo " -- Containers"
155
- for container in $( vmContainers)
155
+ for container in $( vmContainers ' Up ' )
156
156
do
157
157
echo " ---- $container "
158
- # echo "------ start | bash=$XBAR_PLUGIN param1=startContainer param2=$name param3=$container terminal=false refresh=true"
159
- echo " ------ stop | bash=$XBAR_PLUGIN param1=stopContainer param2=$name param3=$container terminal=false refresh=true"
160
- echo " ------ kill | bash=$XBAR_PLUGIN param1=killContainer param2=$name param3=$container terminal=false refresh=true"
161
- echo " ------ pause | bash=$XBAR_PLUGIN param1=pauseContainer param2=$name param3=$container terminal=false refresh=true"
162
- echo " ------ unpause | bash=$XBAR_PLUGIN param1=unpauseContainer param2=$name param3=$container terminal=false refresh=true"
158
+ echo " ------ Running"
159
+ echo " -------- stop | bash=$XBAR_PLUGIN param1=stopContainer param2=$name param3=$container terminal=false refresh=true"
160
+ echo " -------- kill | bash=$XBAR_PLUGIN param1=killContainer param2=$name param3=$container terminal=false refresh=true"
161
+ echo " -------- pause | bash=$XBAR_PLUGIN param1=pauseContainer param2=$name param3=$container terminal=false refresh=true"
162
+ echo " -------- unpause | bash=$XBAR_PLUGIN param1=unpauseContainer param2=$name param3=$container terminal=false refresh=true"
163
+ done
164
+ for stopped in $( vmContainers ' Created' )
165
+ do
166
+ echo " ---- $stopped "
167
+ echo " ------ Stopped"
168
+ echo " -------- rm | bash=$XBAR_PLUGIN param1=rmContainer param2=$name param3=$stopped terminal=false refresh=true"
169
+ echo " -------- start | bash=$XBAR_PLUGIN param1=startContainer param2=$name param3=$stopped terminal=false refresh=true"
170
+ done
171
+ for stopped in $( vmContainers ' Exited' )
172
+ do
173
+ echo " ---- $stopped "
174
+ echo " ------ Stopped"
175
+ echo " -------- rm | bash=$XBAR_PLUGIN param1=rmContainer param2=$name param3=$stopped terminal=false refresh=true"
176
+ echo " -------- start | bash=$XBAR_PLUGIN param1=startContainer param2=$name param3=$stopped terminal=false refresh=true"
163
177
done
164
178
165
179
echo " -- Images"
@@ -181,18 +195,29 @@ function printMenu() {
181
195
}
182
196
183
197
function vmContainers() {
198
+ # $1 = status we're looking for
199
+ local wantedStatus
200
+ wantedStatus=" ${1} "
184
201
# default VM doesn't need to be specified
185
202
if [[ " $VM " != ' default' ]]; then
186
203
export LIMA_INSTANCE=" $VM "
187
204
fi
188
205
# shellcheck disable=SC2001,SC2046,SC2005
189
- containerList=" [$( echo $( lima nerdctl ps --format ' {{json .}},' ) | sed ' s/,$//' ) ]"
206
+ containerList=" [$( echo $( lima nerdctl ps -a - -format ' {{json .}},' ) | sed ' s/,$//' ) ]"
190
207
# Can have spaces in our data, deal by using base64 (ugly)
191
208
for row in $( echo " ${containerList} " | jq -r ' .[] | @base64' ) ; do
192
209
_jq () {
193
210
echo " ${row} " | base64 --decode | jq -r " ${1} "
194
211
}
195
- _jq ' .Names'
212
+ if [[ $( _jq ' .Status' ) == " $wantedStatus " ]]; then
213
+ name=$( _jq ' .Names' )
214
+ id=$( _jq ' .ID' )
215
+ if [[ " $name " != " " ]]; then
216
+ echo " $name "
217
+ else
218
+ echo " $id "
219
+ fi
220
+ fi
196
221
done
197
222
}
198
223
@@ -248,6 +273,24 @@ function rmImage() {
248
273
fi
249
274
}
250
275
276
+ function startContainer() {
277
+ # arg1 = container
278
+ # arg2 = VM
279
+ local containerName
280
+ local VM
281
+ containerName=" $1 "
282
+ VM=" $2 "
283
+ if [[ " $VM " != ' default' ]]; then
284
+ export LIMA_INSTANCE=" $VM "
285
+ fi
286
+ displayNotification lima " Starting ${containerName} on ${VM} ..."
287
+ if lima nerdctl container start " ${containerName} " ; then
288
+ displayNotification Lima " Started ${containerName} "
289
+ else
290
+ displayAlert Lima " Failed to start ${containerName} on ${VM} "
291
+ fi
292
+ }
293
+
251
294
function stopContainer() {
252
295
# arg1 = container
253
296
# arg2 = VM
@@ -284,6 +327,24 @@ function killContainer() {
284
327
fi
285
328
}
286
329
330
+ function rmContainer() {
331
+ # arg1 = container
332
+ # arg2 = VM
333
+ local containerName
334
+ local VM
335
+ containerName=" $1 "
336
+ VM=" $2 "
337
+ if [[ " $VM " != ' default' ]]; then
338
+ export LIMA_INSTANCE=" $VM "
339
+ fi
340
+ displayNotification lima " Removing ${containerName} on ${VM} ..."
341
+ if lima nerdctl container rm " ${containerName} " ; then
342
+ displayNotification Lima " Removed ${containerName} "
343
+ else
344
+ displayAlert Lima " Failed to remove ${containerName} on ${VM} "
345
+ fi
346
+ }
347
+
287
348
function pauseContainer() {
288
349
# arg1 = container
289
350
# arg2 = VM
@@ -328,6 +389,9 @@ function processMenuCommand() {
328
389
pull)
329
390
pullImage " $3 " " $2 " # pull imagename vmname
330
391
;;
392
+ startContainer)
393
+ startContainer " $3 " " $2 " # stopContainer containerName VMname
394
+ ;;
331
395
stopContainer)
332
396
stopContainer " $3 " " $2 " # stopContainer containerName VMname
333
397
;;
@@ -337,6 +401,9 @@ function processMenuCommand() {
337
401
pauseContainer)
338
402
pauseContainer " $3 " " $2 " # pauseContainer containerName VMname
339
403
;;
404
+ rmContainer)
405
+ rmContainer " $3 " " $2 " # pauseContainer containerName VMname
406
+ ;;
340
407
unpauseContainer)
341
408
unpauseContainer " $3 " " $2 " # unpauseContainer containerName VMname
342
409
;;
0 commit comments