Skip to content

Commit ebc1610

Browse files
fj0ragent
andauthored
refactor: introduce spr and sprb for spread (nushell#504)
* refactor: introduce `spr` and `sprb` for spread - eliminate `if ($n|is-empty) { [] } else { [-n $n] }` pattern - `gp -u` can omit branch - delete `grb` - improve the premise in the description * commands for helm as `kxh` - add `(kustomize)` to description of kxk - add commands for helm - kgh - kdh - kah - kdelh - kh - add `nu-complete kube port` of `kpf` - add `--local` flag for `kpf` --------- Co-authored-by: agent <agent@nuc>
1 parent fe594fe commit ebc1610

File tree

4 files changed

+264
-138
lines changed

4 files changed

+264
-138
lines changed

modules/docker/docker.nu

Lines changed: 51 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
1032
def "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

4768
export 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

108127
export 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

150169
export 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

155173
export 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

160177
export 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

165181
export 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

170185
export 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

175189
export 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

180193
export 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

185197
export 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

190201
export 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

195205
export 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

200209
export 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
206214
export 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

211218
def "nu-complete docker volume" [] {
212219
dvl | get name
213220
}
214221

215222
export 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

220226
export 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

225230
export 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

modules/git/README.md

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,18 @@ If there is no branch as an argument, the branch is displayed.
3434
### gp
3535
Pull, push and other related to remote repositories
3636

37+
> We assume that the upstream and downstream branches keep the same name and do not operate across branches.
38+
3739
- `--clone` to clone
3840
- `--submodule` submodule update and submodule init (with `--init`)
3941
- `--force` push --force (assume `pull --force` doesn't make sense)
4042
- `--init` git init
4143
- `--override` just used to trigger a github actions event (in fact, webhooks can also be used)
42-
- if branch is specified, we assume it is `git fetch`
43-
- unless -u is specified: `git push -u`
44+
- `--set-upstream` push --set-upstream
45+
- if branch is specified, it is `git fetch` (let's assume you don't like pulling from a different branch)
4446
- finally, if no branch and above parameters are specified
45-
- `git fetch` to update status.
46-
- `git pull` or `git push` will be executed according to the current state.
47-
- if both `ahead` and `behind` exist, only `pull`
47+
- `git pull` to update.
48+
- if `ahead`, `git push` will be executed.
4849

4950
### ga
5051
Git add, rm and restore. about files.
@@ -79,3 +80,10 @@ Git remote
7980

8081
### gbs
8182
Git bisect
83+
84+
## changelog
85+
86+
#### 2023-05-18
87+
- `gp -u` can omit branch
88+
- delete `grb`
89+
- improve the premise in the description

modules/git/git-v2.nu

Lines changed: 49 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,28 @@ def agree [prompt] {
77
([yes no] | input list $prompt) in [yes]
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+
1032
# git status and stash
1133
export def gs [
1234
--apply (-a): bool
@@ -31,8 +53,7 @@ export def gs [
3153
} else if $show {
3254
git stash show --text
3355
} else if $all {
34-
let iu = if $include_untracked { [--include-untracked] } else { [] }
35-
git stash --all $iu
56+
git stash --all (sprb $include_untracked [--include-untracked])
3657
} else {
3758
git status
3859
}
@@ -96,8 +117,7 @@ export def gp [
96117
--autostash (-a): bool # git pull --autostash
97118
] {
98119
if not ($clone | is-empty) {
99-
let s = if $submodule { [--recurse-submodules] } else { [] }
100-
git clone $s $clone
120+
git clone (sprb $submodule [--recurse-submodules]) $clone
101121
} else if $submodule {
102122
if $init {
103123
git submodule init
@@ -114,16 +134,16 @@ export def gp [
114134
git add --all
115135
git commit -v -a --no-edit --amend
116136
git push --force
137+
} else if $set_upstream {
138+
let remote = if ($remote | is-empty) { 'origin' } else { $remote }
139+
let branch = if ($branch | is-empty) { (_git_status).branch } else { $branch }
140+
git push -u $remote $branch
117141
} else if not ($branch | is-empty) {
118142
let remote = if ($remote|is-empty) { 'origin' } else { $remote }
119-
if $set_upstream {
120-
git push -u $remote $branch
121-
} else {
122-
git fetch $remote $branch
123-
}
143+
git fetch $remote $branch
124144
} else {
125-
let r = if $rebase { [--rebase] } else { [] }
126-
let a = if $autostash { [--autostash] } else { [] }
145+
let r = (sprb $rebase [--rebase])
146+
let a = (sprb $autostash [--autostash])
127147
git pull $r $a -v
128148
let s = (_git_status)
129149
if $s.ahead > 0 {
@@ -147,18 +167,18 @@ export def ga [
147167
--source (-o): string
148168
] {
149169
if $delete {
150-
let c = if $cached { [--cached] } else { [] }
151-
let f = if $force { [--force] } else { [] }
152-
git rm $c $file
170+
let c = (sprb $cached [--cached])
171+
let f = (sprb $force [--force])
172+
git rm $c $f $file
153173
} else if $restore {
154-
let o = if ($source | is-empty) { [] } else { [--source $source] }
155-
let s = if $staged { [--staged] } else { [] }
174+
let o = (spr [--source $source])
175+
let s = (sprb $staged [--staged])
156176
git restore $o $s $file
157177
} else {
158-
let a = if $all { [--all] } else { [] }
159-
let p = if $patch { [--patch] } else { [] }
160-
let u = if $update { [--update] } else { [] }
161-
let v = if $verbose { [--verbose] } else { [] }
178+
let a = (sprb $all [--all])
179+
let p = (sprb $patch [--patch])
180+
let u = (sprb $update [--update])
181+
let v = (sprb $verbose [--verbose])
162182
let file = if ($file | is-empty) { [.] } else { [$file] }
163183
git add $a $p $u $v $file
164184
}
@@ -172,10 +192,10 @@ export def gc [
172192
--amend (-a): bool
173193
--keep (-k): bool
174194
] {
175-
let m = if ($message | is-empty) { [] } else { [-m $message] }
176-
let a = if $all { [--all] } else { [] }
177-
let n = if $amend { [--amend] } else { [] }
178-
let k = if $keep { [--no-edit] } else { [] }
195+
let m = (spr [-m $message])
196+
let a = (sprb $all [--all])
197+
let n = (sprb $amend [--amend])
198+
let k = (sprb $keep [--no-edit])
179199
git commit -v $m $a $n $k
180200
}
181201

@@ -185,9 +205,9 @@ export def gd [
185205
--word-diff (-w): bool # word-diff
186206
--staged (-s): bool # staged
187207
] {
188-
let w = if $word_diff { [--word-diff] } else { [] }
189-
let c = if $cached { [--cached] } else { [] }
190-
let s = if $staged { [--staged] } else { [] }
208+
let w = (sprb $word_diff [--word-diff])
209+
let c = (sprb $cached [--cached])
210+
let s = (sprb $staged [--staged])
191211
git diff $c $s $w
192212
}
193213

@@ -254,8 +274,8 @@ export def gr [
254274
commit?: string@"nu-complete git log"
255275
--hard (-h): bool
256276
] {
257-
let h = if $hard { [--hard] } else { [] }
258-
let c = if ($commit | is-empty) { [] } else { [$commit] }
277+
let h = (sprb $hard [--hard])
278+
let c = (spr [$commit])
259279
git reset $h $c
260280
}
261281

@@ -323,11 +343,6 @@ export def gsq [] {
323343
git gc --prune=now --aggressive
324344
}
325345

326-
export def grb [branch:string@"nu-complete git branches"] {
327-
git rebase (gstat).branch $branch
328-
}
329-
330-
331346
export alias gcf = git config --list
332347
export alias gsw = git switch
333348
export alias gswc = git switch -c
@@ -504,6 +519,3 @@ def git_main_branch [] {
504519
| str replace 'HEAD .*?[:: ](.+)' '$1'
505520
}
506521

507-
def git_current_branch [] {
508-
(gstat).branch
509-
}

0 commit comments

Comments
 (0)