@@ -7,6 +7,28 @@ export-env {
77 }
88}
99
10+ def sprb [flag , args ] {
11+ if $flag {
12+ $args
13+ } else {
14+ []
15+ }
16+ }
17+
18+ def spr [args ] {
19+ let lst = ($args | last )
20+ if ($lst | is-empty ) {
21+ []
22+ } else {
23+ let init = ($args | range .. -2 )
24+ if ($init | is-empty ) {
25+ [ $lst ]
26+ } else {
27+ $init | append $lst
28+ }
29+ }
30+ }
31+
1032def "nu-complete docker ns" [] {
1133 if $env .docker-cli == ' nerdctl' {
1234 ^$env.docker-cli namespace list
@@ -37,16 +59,14 @@ export def dp [-n: string@"nu-complete docker ns"] {
3759 $r | upsert created $t
3860 }
3961 } else {
40- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
41- ^$cli $ns ps - a
62+ ^$cli (spr [-n $n ]) ps - a
4263 | from ssv
4364 | rename id image cmd created status port name
4465 }
4566}
4667
4768export def di [- n : string @" nu-complete docker ns" ] {
48- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
49- ^$env.docker-cli $ns images
69+ ^$env.docker-cli (spr [-n $n ]) images
5070 | from ssv - a
5171 | rename repo tag id created size
5272 | each {|x |
@@ -101,16 +121,15 @@ export def dln [ctn: string@"nu-complete docker container"
101121 - n : string @" nu-complete docker ns" # namespace
102122] {
103123 let l = if $l == 0 { [] } else { [--tail $l ] }
104- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
105- ^$env.docker-cli $ns logs - f $l $ctn
124+ ^$env.docker-cli (spr [-n $n ]) logs - f $l $ctn
106125}
107126
108127export def da [
109128 ctn : string @" nu-complete docker container"
110129 - n : string @" nu-complete docker ns"
111130 ... args
112131] {
113- let ns = if ( $n | is-empty ) { [] } else { [ -n $n ] }
132+ let ns = ( spr [ -n $n ])
114133 if ($args | is-empty ) {
115134 ^$env.docker-cli $ns exec - it $ctn /bin/sh - c " [ -e /bin/zsh ] && /bin/zsh || [ -e /bin/bash ] && /bin/bash || /bin/sh"
116135 } else {
@@ -148,83 +167,68 @@ export def dcp [
148167}
149168
150169export def dcr [ctn : string @" nu-complete docker all container" - n : string @" nu-complete docker ns" ] {
151- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
152- ^$env.docker-cli $ns container rm - f $ctn
170+ ^$env.docker-cli (spr [-n $n ]) container rm - f $ctn
153171}
154172
155173export def dis [img : string @" nu-complete docker images" - n : string @" nu-complete docker ns" ] {
156- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
157- ^$env.docker-cli $ns inspect $img
174+ ^$env.docker-cli (spr [-n $n ]) inspect $img
158175}
159176
160177export def dh [img : string @" nu-complete docker images" - n : string @" nu-complete docker ns" ] {
161- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
162- ^$env.docker-cli $ns history -- no-trunc $img | from ssv - a
178+ ^$env.docker-cli (spr [-n $n ]) history -- no-trunc $img | from ssv - a
163179}
164180
165181export def dsv [- n : string @" nu-complete docker ns" ... img : string @" nu-complete docker images" ] {
166- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
167- ^$env.docker-cli $ns save $img
182+ ^$env.docker-cli (spr [-n $n ]) save $img
168183}
169184
170185export def dld [- n : string @" nu-complete docker ns" ] {
171- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
172- ^$env.docker-cli $ns load
186+ ^$env.docker-cli (spr [-n $n ]) load
173187}
174188
175189export def dsp [- n : string @" nu-complete docker ns" ] {
176- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
177- ^$env.docker-cli $ns system prune - f
190+ ^$env.docker-cli (spr [-n $n ]) system prune - f
178191}
179192
180193export def dspall [- n : string @" nu-complete docker ns" ] {
181- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
182- ^$env.docker-cli $ns system prune -- all -- force -- volumes
194+ ^$env.docker-cli (spr [-n $n ]) system prune -- all -- force -- volumes
183195}
184196
185197export def drmi [img : string @" nu-complete docker images" - n : string @" nu-complete docker ns" ] {
186- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
187- ^$env.docker-cli $ns rmi $img
198+ ^$env.docker-cli (spr [-n $n ]) rmi $img
188199}
189200
190201export def dt [from : string @" nu-complete docker images" to : string - n : string @" nu-complete docker ns" ] {
191- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
192- ^$env.docker-cli $ns tag $from $to
202+ ^$env.docker-cli (spr [-n $n ]) tag $from $to
193203}
194204
195205export def dps [img : string @" nu-complete docker images" - n : string @" nu-complete docker ns" ] {
196- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
197- ^$env.docker-cli $ns push $img
206+ ^$env.docker-cli (spr [-n $n ]) push $img
198207}
199208
200209export def dpl [img - n : string @" nu-complete docker ns" ] {
201- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
202- ^$env.docker-cli $ns pull $img
210+ ^$env.docker-cli (spr [-n $n ]) pull $img
203211}
204212
205213### volume
206214export def dvl [- n : string @" nu-complete docker ns" ] {
207- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
208- ^$env.docker-cli $ns volume ls | from ssv - a
215+ ^$env.docker-cli (spr [-n $n ]) volume ls | from ssv - a
209216}
210217
211218def "nu-complete docker volume" [] {
212219 dvl | get name
213220}
214221
215222export def dvc [name : string - n : string @" nu-complete docker ns" ] {
216- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
217- ^$env.docker-cli $ns volume create
223+ ^$env.docker-cli (spr [-n $n ]) volume create
218224}
219225
220226export def dvi [name : string @" nu-complete docker volume" - n : string @" nu-complete docker ns" ] {
221- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
222- ^$env.docker-cli $ns volume inspect $name
227+ ^$env.docker-cli (spr [-n $n ]) volume inspect $name
223228}
224229
225230export def dvr [... name : string @" nu-complete docker volume" - n : string @" nu-complete docker ns" ] {
226- let ns = if ($n | is-empty ) { [] } else { [-n $n ] }
227- ^$env.docker-cli $ns volume rm $name
231+ ^$env.docker-cli (spr [-n $n ]) volume rm $name
228232}
229233
230234### run
@@ -277,19 +281,19 @@ export def dr [
277281 img : string @" nu-complete docker images" # image
278282 ... cmd # command args
279283] {
280- let ns = if ( $namespace | is-empty ) { [] } else { [ -n $namespace ] }
281- let entrypoint = if ( $entrypoint | is-empty ) { [] } else { [ --entrypoint $entrypoint ] }
284+ let ns = ( spr [ -n $namespace ])
285+ let entrypoint = ( spr [ --entrypoint $entrypoint ])
282286 let daemon = if $daemon { [-d ] } else { [--rm -it ] }
283- let mnt = if ( $mnt | is-empty ) { [] } else { [ -v $mnt ] }
284- let workdir = if ( $workdir | is-empty ) { [] } else { [ -w $workdir ] }
287+ let mnt = ( spr [ -v $mnt ])
288+ let workdir = ( spr [ -w $workdir ])
285289 let vols = if ($vols | is-empty ) { [] } else { $vols | transpose k v | each {|x | $" -v '(host-path $x.k ):($x.v )'" } }
286290 let envs = if ($envs | is-empty ) { [] } else { $envs | transpose k v | each {|x | $" -e ($x.k )=($x.v )" } }
287291 let ports = if ($ports | is-empty ) { [] } else { $ports | transpose k v | each {|x |[-p $" ($x.k ):($x.v )" ]} | flatten }
288- let debug = if $debug { [--cap-add=SYS_ADMIN --cap-add=SYS_PTRACE --security-opt seccomp=unconfined ] } else { [] }
289- #let appimage = if $appimage { [--device /dev/fuse --security-opt apparmor:unconfined] } else { [] }
290- let appimage = if $appimage { [--device /dev/fuse ] } else { [] }
291- let netadmin = if $netadmin { [--cap-add=NET_ADMIN --device /dev/net/tun ] } else { [] }
292- let clip = if $with_x { [-e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix ] } else { [] }
292+ let debug = ( sprb $debug [--cap-add=SYS_ADMIN --cap-add=SYS_PTRACE --security-opt seccomp=unconfined ])
293+ #let appimage = (sprb $appimage [--device /dev/fuse --security-opt apparmor:unconfined])
294+ let appimage = ( sprb $appimage [--device /dev/fuse ])
295+ let netadmin = ( sprb $netadmin [--cap-add=NET_ADMIN --device /dev/net/tun ])
296+ let clip = ( sprb $with_x [-e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix ])
293297 let ssh = if ($ssh | is-empty ) { [] } else {
294298 let sshkey = (cat ([$env .HOME .ssh $ssh ] | path join ) | split row ' ' | get 1 )
295299 [-e $" ed25519_($sshuser )=($sshkey )" ]
@@ -301,7 +305,7 @@ export def dr [
301305 let c = $" container:($attach )"
302306 [--uts $c --ipc $c --pid $c --network $c ]
303307 }
304- let cache = if ( $cache | is-empty ) { [] } else { [ -v $cache ] }
308+ let cache = ( spr [ -v $cache ])
305309 let args = ([
306310 $entrypoint $attach $daemon
307311 $ports $envs $ssh $proxy
0 commit comments