fzf/uninstall

114 lines
2.4 KiB
Plaintext
Raw Normal View History

2014-11-30 20:02:34 +00:00
#!/usr/bin/env bash
2014-05-20 12:17:03 +00:00
xdg=0
prefix='~/.fzf'
prefix_expand=~/.fzf
fish_dir=${XDG_CONFIG_HOME:-$HOME/.config}/fish
help() {
cat << EOF
usage: $0 [OPTIONS]
--help Show this message
--xdg Remove files generated under \$XDG_CONFIG_HOME/fzf
EOF
}
for opt in "$@"; do
case $opt in
--help)
help
exit 0
;;
--xdg)
xdg=1
prefix='"${XDG_CONFIG_HOME:-$HOME/.config}"/fzf/fzf'
prefix_expand=${XDG_CONFIG_HOME:-$HOME/.config}/fzf/fzf
;;
*)
echo "unknown option: $opt"
help
exit 1
;;
esac
done
ask() {
while true; do
read -p "$1 ([y]/n) " -r
REPLY=${REPLY:-"y"}
if [[ $REPLY =~ ^[Yy]$ ]]; then
2014-05-21 17:26:59 +00:00
return 0
elif [[ $REPLY =~ ^[Nn]$ ]]; then
2014-05-21 17:26:59 +00:00
return 1
fi
done
}
remove() {
echo "Remove $1"
rm -f "$1"
}
2014-05-20 12:17:03 +00:00
remove_line() {
src=$1
echo "Remove from $1:"
2014-05-20 16:14:21 +00:00
shift
2014-05-21 17:26:59 +00:00
line_no=1
match=0
while [ -n "$1" ]; do
line=$(sed -n "$line_no,\$p" "$src" | \grep -m1 -nF "$1")
if [ $? -ne 0 ]; then
shift
line_no=1
continue
fi
2014-05-21 17:26:59 +00:00
line_no=$(( $(sed 's/:.*//' <<< "$line") + line_no - 1 ))
2014-05-21 17:34:20 +00:00
content=$(sed 's/^[0-9]*://' <<< "$line")
match=1
echo " - Line #$line_no: $content"
[ "$content" = "$1" ] || ask " - Remove?"
2014-05-21 17:26:59 +00:00
if [ $? -eq 0 ]; then
temp=$(mktemp)
awk -v n=$line_no 'NR == n {next} {print}' "$src" > "$temp" &&
cat "$temp" > "$src" && rm -f "$temp" || break
2014-05-21 17:26:59 +00:00
echo " - Removed"
else
echo " - Skipped"
line_no=$(( line_no + 1 ))
fi
2014-05-20 15:05:02 +00:00
done
2014-05-21 17:26:59 +00:00
[ $match -eq 0 ] && echo " - Nothing found"
2014-05-20 12:17:03 +00:00
echo
}
for shell in bash zsh; do
shell_config=${prefix_expand}.${shell}
remove "${shell_config}"
remove_line ~/.${shell}rc \
"[ -f ${prefix}.${shell} ] && source ${prefix}.${shell}" \
"source ${prefix}.${shell}"
2014-05-20 12:17:03 +00:00
done
bind_file="${fish_dir}/functions/fish_user_key_bindings.fish"
2014-05-20 16:14:21 +00:00
if [ -f "$bind_file" ]; then
remove_line "$bind_file" "fzf_key_bindings"
2014-05-20 16:14:21 +00:00
fi
if [ -d "${fish_dir}/functions" ]; then
remove "${fish_dir}/functions/fzf.fish"
remove "${fish_dir}/functions/fzf_key_bindings.fish"
2014-05-20 15:05:02 +00:00
if [ -z "$(ls -A "${fish_dir}/functions")" ]; then
rmdir "${fish_dir}/functions"
else
echo "Can't delete non-empty directory: \"${fish_dir}/functions\""
2014-05-20 15:05:02 +00:00
fi
2014-05-20 12:17:03 +00:00
fi
2014-05-20 15:05:02 +00:00
config_dir=$(dirname "$prefix_expand")
if [[ "$xdg" = 1 ]] && [[ "$config_dir" = */fzf ]] && [[ -d "$config_dir" ]]; then
rmdir "$config_dir"
fi