code / scripts

Lines748 Shell528 Python72 Lua67 Bourne Again Shell62 make15
1 others 4
Markdown4
(36 lines)
1 #!/bin/sh
2 # Manage stowed programs
4 isstowed() {
5 f="$(find "/usr/local/stow/$1" -type f -print -quit)"
6 f2="$(echo "$f" | sed -e 's;^/usr/local/stow/'"$1"'/;/usr/local/;')"
7 [ "$(realpath "$f2" 2>/dev/null)" = "$f" ]
8 }
10 if arg --list "$@" || arg -l "$@"; then
11 for pack in /usr/local/stow/*; do
12 if isstowed "$pack"; then
13 printf "\x1b[1m+ %s\x1b[0m\n" "$pack"
14 else
15 printf "\x1b[2m- %s\x1b[0m\n" "$pack"
16 fi
17 done
18 else
19 package=$(ls /usr/local/stow | fzy -l 20 -p "Select a stow package: " -q "$1") || exit 1
20 if isstowed "$package"; then
21 printf "\x1b[1m%s\x1b[0m is currently stowed. Do you want to \x1b[1m(u)\x1b[0mnstow it, " "$package"
22 printf "\x1b[1m(r)\x1b[0mestow it, or do \x1b[1m(n)\x1b[0mothing? [u/r/n] "
23 read -r choice
24 if [ "$choice" = "u" ]; then
25 sudo stow -d /usr/local/stow -D "$package" && printf "Unstowed \x1b[1m%s\x1b[0m!\n" "$package"
26 elif [ "$choice" = "r" ]; then
27 sudo stow -d /usr/local/stow -R "$package" && printf "Restowed \x1b[1m%s\x1b[0m!\n" "$package"
28 fi
29 else
30 printf "\x1b[1m%s\x1b[0m is not currently stowed. Do you want to stow it? [Y/n] " "$package"
31 read -r confirm
32 if [ "$confirm" != "n" ]; then
33 sudo stow -d /usr/local/stow "$package" && printf "Stowed \x1b[1m%s\x1b[0m!\n" "$package"
34 fi
35 fi
36 fi