diff options
author | Gregor Kleen <gkleen@yggdrasil.li> | 2025-05-14 10:50:27 +0200 |
---|---|---|
committer | Gregor Kleen <gkleen@yggdrasil.li> | 2025-05-14 10:50:27 +0200 |
commit | 43c9825e49d25fbd2c19abcdeb8f73aee8be2a4c (patch) | |
tree | c1cc8a034395c9bb8188651f6835922b38887f32 /accounts/gkleen@sif/zshrc | |
parent | 03d49aa8ec6f51c8f51bfb628e614ac537cca8e0 (diff) | |
download | nixos-43c9825e49d25fbd2c19abcdeb8f73aee8be2a4c.tar nixos-43c9825e49d25fbd2c19abcdeb8f73aee8be2a4c.tar.gz nixos-43c9825e49d25fbd2c19abcdeb8f73aee8be2a4c.tar.bz2 nixos-43c9825e49d25fbd2c19abcdeb8f73aee8be2a4c.tar.xz nixos-43c9825e49d25fbd2c19abcdeb8f73aee8be2a4c.zip |
...
Diffstat (limited to 'accounts/gkleen@sif/zshrc')
-rw-r--r-- | accounts/gkleen@sif/zshrc | 80 |
1 files changed, 43 insertions, 37 deletions
diff --git a/accounts/gkleen@sif/zshrc b/accounts/gkleen@sif/zshrc index 06f6f6f2..7645e0fc 100644 --- a/accounts/gkleen@sif/zshrc +++ b/accounts/gkleen@sif/zshrc | |||
@@ -6,11 +6,10 @@ dir() { | |||
6 | forceShell=false | 6 | forceShell=false |
7 | wormhole=false | 7 | wormhole=false |
8 | gitWorktree="" | 8 | gitWorktree="" |
9 | # notmuchMsg="" | ||
10 | quickserve=false | ||
11 | modifyPDF="" | 9 | modifyPDF="" |
10 | miniserve=false | ||
12 | 11 | ||
13 | while getopts ':t:a:d:ir:wqg:p:' arg; do | 12 | while getopts ':t:a:d:ir:wg:p:m' arg; do |
14 | case $arg in | 13 | case $arg in |
15 | "t") ;; | 14 | "t") ;; |
16 | "a") | 15 | "a") |
@@ -26,9 +25,8 @@ dir() { | |||
26 | "r") repoUrl=${OPTARG} ;; | 25 | "r") repoUrl=${OPTARG} ;; |
27 | "w") wormhole=true ;; | 26 | "w") wormhole=true ;; |
28 | "g") gitWorktree=${OPTARG} ;; | 27 | "g") gitWorktree=${OPTARG} ;; |
29 | # "n") notmuchMsg=${OPTARG} ;; | ||
30 | "q") quickserve=true ;; | ||
31 | "p") modifyPDF=${OPTARG:a} ;; | 28 | "p") modifyPDF=${OPTARG:a} ;; |
29 | "m") miniserve=true ;; | ||
32 | *) printf "Invalid option: %s\n" $arg >&2; exit 2 ;; | 30 | *) printf "Invalid option: %s\n" $arg >&2; exit 2 ;; |
33 | esac | 31 | esac |
34 | done | 32 | done |
@@ -52,17 +50,29 @@ dir() { | |||
52 | gitWorktree="" | 50 | gitWorktree="" |
53 | fi | 51 | fi |
54 | 52 | ||
53 | miniservePIDFile="" | ||
54 | if [[ ${miniserve} = "true" ]]; then | ||
55 | miniservePIDFile=$(mktemp --tmpdir --suffix=.pid) | ||
56 | fi | ||
57 | |||
55 | cleanup() | 58 | cleanup() |
56 | { | 59 | { |
57 | cd ${modifyPDF:h} | ||
58 | if [[ -n ${modifyPDF} ]]; then | 60 | if [[ -n ${modifyPDF} ]]; then |
61 | cd ${modifyPDF:h} | ||
59 | typeset -a pages | 62 | typeset -a pages |
60 | eval 'pages=(${dir}/${modifyPDF:t:r}_*.png(on))' | 63 | eval 'pages=(${dir}/${modifyPDF:t:r}_*.png(on))' |
61 | magick -verbose "$pages" ${modifyPDF} | 64 | magick -verbose "$pages" ${modifyPDF} |
65 | modifyPDF="" | ||
66 | fi | ||
67 | if [[ -n ${miniservePIDFile} ]]; then | ||
68 | kill --verbose $(cat ${miniservePIDFile}) && wait $(cat ${miniservePIDFile}) | ||
69 | miniservePIDFile="" | ||
62 | fi | 70 | fi |
63 | } | 71 | } |
64 | 72 | ||
65 | ( | 73 | ( |
74 | set -o localtraps | ||
75 | trap 'return 1' INT TERM | ||
66 | trap cleanup EXIT | 76 | trap cleanup EXIT |
67 | 77 | ||
68 | cd ${dir} | 78 | cd ${dir} |
@@ -135,18 +145,18 @@ dir() { | |||
135 | [[ $wormhole = "true" ]] && wormhole receive --accept-file | 145 | [[ $wormhole = "true" ]] && wormhole receive --accept-file |
136 | 146 | ||
137 | 147 | ||
138 | if [[ $quickserve = "true" ]]; then | 148 | if [[ ${#@} -gt 0 ]]; then |
139 | quickserve --root . --upload . --show-hidden --tar gz | 149 | ${@} |
140 | fi | 150 | fi |
141 | 151 | ||
152 | cd $(pwd) # Needed for mounting to work | ||
142 | 153 | ||
143 | if [[ ${#@} -eq 0 ]] || [[ $forceShell = "true" ]]; then | 154 | if [[ ${miniserve} = "true" ]]; then |
144 | if [[ ${#@} -gt 0 ]]; then | 155 | miniserve --random-route --hidden --enable-tar-gz --enable-zip . & |
145 | ${@} | 156 | echo $! > "${miniservePIDFile}" |
146 | fi | 157 | fi |
147 | |||
148 | cd $(pwd) # Needed for mounting to work | ||
149 | 158 | ||
159 | if [[ ${#@} -eq 0 ]] && [[ ${miniserve} != "true" ]] || [[ $forceShell = "true" ]]; then | ||
150 | isSingleDir() { | 160 | isSingleDir() { |
151 | typeset -a contents | 161 | typeset -a contents |
152 | contents=(*(N) .*(N)) | 162 | contents=(*(N) .*(N)) |
@@ -160,10 +170,9 @@ dir() { | |||
160 | } | 170 | } |
161 | while d=$(isSingleDir); do cd ${d}; done | 171 | while d=$(isSingleDir); do cd ${d}; done |
162 | 172 | ||
163 | |||
164 | zsh | 173 | zsh |
165 | else | 174 | elif [[ ${miniserve} == "true" ]]; then |
166 | ${@} | 175 | wait $(cat "${miniservePIDFile}") |
167 | fi | 176 | fi |
168 | ) | 177 | ) |
169 | } | 178 | } |
@@ -171,27 +180,30 @@ dir() { | |||
171 | tmpdir() { | 180 | tmpdir() { |
172 | cleanup() | 181 | cleanup() |
173 | { | 182 | { |
174 | cd / | 183 | cd / |
175 | unmount() { | 184 | unmount() { |
176 | printf "Unmounting %s\n" ${1} >&2 | 185 | printf "Unmounting %s\n" ${1} >&2 |
177 | fusermount -u ${1} || umount ${1} || sudo umount ${1} | 186 | fusermount -u ${1} || umount ${1} || sudo umount ${1} |
178 | } | 187 | } |
179 | 188 | ||
180 | if mountpoint -q -- ${dir}; then | 189 | if [[ -n ${dir} ]]; then |
181 | unmount ${dir} || return $? | 190 | if mountpoint -q -- ${dir}; then |
182 | else | 191 | unmount ${dir} || return $? |
183 | while read -d $'\0' subDir; do | 192 | else |
184 | mountpoint -q -- ${subDir} || continue | 193 | while read -d $'\0' subDir; do |
185 | unmount ${subDir} || return $? | 194 | mountpoint -q -- ${subDir} || continue |
186 | done <<<$(find ${dir} -xdev -type d -print0 | sort -zr) | 195 | unmount ${subDir} || return $? |
187 | fi | 196 | done <<<$(find ${dir} -xdev -type d -print0 | sort -zr) |
188 | 197 | fi | |
189 | rm -rfv --one-file-system -- ${dir} | 198 | |
199 | rm -rfv --one-file-system -- ${dir} | ||
200 | dir="" | ||
201 | fi | ||
190 | } | 202 | } |
191 | 203 | ||
192 | local tmpdir="" | 204 | local tmpdir="" |
193 | 205 | ||
194 | while getopts ':t:a:s:Sd:ir:wqg:p:' arg; do | 206 | while getopts ':t:a:d:ir:wg:p:m' arg; do |
195 | case $arg in | 207 | case $arg in |
196 | "t") tmpdir="=${OPTARG}" ;; | 208 | "t") tmpdir="=${OPTARG}" ;; |
197 | "?"|":") printf "Invalid option: %s\n" $arg >&2; exit 2 ;; | 209 | "?"|":") printf "Invalid option: %s\n" $arg >&2; exit 2 ;; |
@@ -199,6 +211,8 @@ tmpdir() { | |||
199 | done | 211 | done |
200 | 212 | ||
201 | ( | 213 | ( |
214 | set -o localtraps | ||
215 | trap 'return 1' INT TERM | ||
202 | trap cleanup EXIT | 216 | trap cleanup EXIT |
203 | 217 | ||
204 | 218 | ||
@@ -247,14 +261,6 @@ l() { | |||
247 | ls --long --binary --git --time-style=iso --header $@ | 261 | ls --long --binary --git --time-style=iso --header $@ |
248 | } | 262 | } |
249 | 263 | ||
250 | re() { | ||
251 | systemctl restart $@ | ||
252 | } | ||
253 | |||
254 | ure() { | ||
255 | systemctl --user restart $@ | ||
256 | } | ||
257 | |||
258 | ssh-installer() { | 264 | ssh-installer() { |
259 | ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentityFile=~/.ssh/gkleen@sif.midgard.yggdrasil $@ | 265 | ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentityFile=~/.ssh/gkleen@sif.midgard.yggdrasil $@ |
260 | } | 266 | } |