Add linewise user confirmation
This commit is contained in:
parent
6a1b916598
commit
c3827dea10
42
uninstall
42
uninstall
@ -1,5 +1,22 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
confirm() {
|
||||||
|
while [ 1 ]; do
|
||||||
|
read -p "$1" -n 1 -r
|
||||||
|
echo
|
||||||
|
if [[ "$REPLY" =~ ^[Yy] ]]; then
|
||||||
|
return 0
|
||||||
|
elif [[ "$REPLY" =~ ^[Nn] ]]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
remove() {
|
||||||
|
echo "Remove $1"
|
||||||
|
rm -f "$1"
|
||||||
|
}
|
||||||
|
|
||||||
remove_line() {
|
remove_line() {
|
||||||
src=$(readlink "$2")
|
src=$(readlink "$2")
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
@ -8,23 +25,30 @@ remove_line() {
|
|||||||
src=$2
|
src=$2
|
||||||
echo "Remove from $2:"
|
echo "Remove from $2:"
|
||||||
fi
|
fi
|
||||||
echo " - $1"
|
|
||||||
|
|
||||||
changed=0
|
line_no=1
|
||||||
|
match=0
|
||||||
while [ 1 ]; do
|
while [ 1 ]; do
|
||||||
line=$(grep -m1 -nF "$1" "$src") || break
|
line=$(sed -n "$line_no,\$p" "$src" | grep -m1 -nF "$1") || break
|
||||||
line_no=$(sed 's/:.*//' <<< "$line")
|
match=1
|
||||||
echo " - Remove line ($line)"
|
line_no=$(( $(sed 's/:.*//' <<< "$line") + line_no - 1 ))
|
||||||
|
echo " - Line #$line_no: $(sed 's/^[0-9]*://' <<< "$line")"
|
||||||
|
confirm " - Remove (y/n) ? "
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
awk -v n=$line_no 'NR == n {next} {print}' "$src" > "$src.bak" &&
|
awk -v n=$line_no 'NR == n {next} {print}' "$src" > "$src.bak" &&
|
||||||
mv "$src.bak" "$src" || break
|
mv "$src.bak" "$src" || break
|
||||||
changed=1
|
echo " - Removed"
|
||||||
|
else
|
||||||
|
echo " - Skipped"
|
||||||
|
line_no=$(( line_no + 1 ))
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
[ $changed -eq 0 ] && echo " - Nothing found"
|
[ $match -eq 0 ] && echo " - Nothing found"
|
||||||
echo
|
echo
|
||||||
}
|
}
|
||||||
|
|
||||||
for shell in bash zsh; do
|
for shell in bash zsh; do
|
||||||
rm -f ~/.fzf.${shell}
|
remove ~/.fzf.${shell}
|
||||||
remove_line "source ~/.fzf.${shell}" ~/.${shell}rc
|
remove_line "source ~/.fzf.${shell}" ~/.${shell}rc
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -34,7 +58,7 @@ if [ -f "$bind_file" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d ~/.config/fish/functions ]; then
|
if [ -d ~/.config/fish/functions ]; then
|
||||||
rm -f ~/.config/fish/functions/fzf.fish
|
remove ~/.config/fish/functions/fzf.fish
|
||||||
|
|
||||||
if [ "$(ls -A ~/.config/fish/functions)" ]; then
|
if [ "$(ls -A ~/.config/fish/functions)" ]; then
|
||||||
echo "Can't delete non-empty directory: \"~/.config/fish/functions\""
|
echo "Can't delete non-empty directory: \"~/.config/fish/functions\""
|
||||||
|
Loading…
Reference in New Issue
Block a user